jdbc之简单基础连接

一、jdbc步骤(创建BaseDao类):

1、创建返回Connection对象的方法:
    1、Class.forName("com.mysql.jdbc.Driver");
    2、DriverManager.getConnection("jdbc:mysql://localhost:3306/库名");
    3、return Connection对象;
    4、解读:1是加载驱动2是通过驱动类获得连接。

2、创建返回增删改的结果集(int类型)的方法,有两个参数sql,obj数组:
    1、通过Connection对象的prepareStatement(sql)方法获得PreparedStatement对象;
    2、判断传入的数组不为null、长度不等于0;
    3、在if实体里for循环,用ps.setObject(i+1,obj[i])给占位符赋值;
    4、通过ps的executeUpdate()方法得到结果集int类型);
    5、返回结果集即可。

3、创建返回查询的结果集(ResultSet类型)的方法,参数同上:
    1、同上;
    2、同上;
    3、同上;
    4、通过ps的executeQuery()方法得到结果集(ResultSet类型);
    5、返回结果集即可。

4、创建关闭所有对象的方法,参数就是上面所出现的对象(3个):(目前没用到,写的时候都省略了,)
    1、if(对象!=null){对象.close(0},写三个if即可。

二、创建PetDao接口:与BaseDao类同一个包

1、里面写问题的方法,比如addPet、updatePet、getFive(前5条方法)、requestRow(获得数据的行数);
    1、int addPet(Pet pet);//添加的方法
    2、int update(Pet pet);//修改的方法
    3、List<Pet> getFive();//分页查询前5条数据
    4、int requestRow();   //查看数据有多少行

三、新建一个impl包:

1、创建一个PetDao的实现类继承BaseDao类、实现PetDao接口,重写接口的全部方法;

2、举例写三个方法:addPet()、getFive()、requestRow()
    1、public int addPet(Pet pet){
        //插入的sql语句
        String sql="insert into pet values(?,?,?,?,?)";
        //占位符的值
        Object[] obj={pet.getpId(),pet.getpName(),pet.getpHealth(),pet.getpLove(),pet.getpStrain()};
        //调用BaseDao的增删改方法utilMethod()
        int num=this.utilMethod(String sql,Object[] obj);
        return num;
    }
    2、public List<pet> getFive(){
        //查询的sql语句
        String sql="select * from pet limit 0,5";
        //占位符的值
        //Object[] obj={};
        //调用BaseDao的查询方法selectAll()得到结果集ResultSet
        ResultSet rs=this.select(sql,null);
        //声明一个集合放Pet的数据
        List<Pet> list=new ArrayList<Pet>();
        //初始化Pet对象
        Pet pet=null;
        //判断结果集是否有值
        while(rs.next()){
            //实例化Pet对象
            pet=new Pet();
            //把从数据库拿到的值放到对象
            pet.setpId(rs.getInt("pId"));
            pet.setpName(rs.getString("pName"));
            pet.setpHealth(rs.getInt("pHealth"));
            pet.setpLove(rs.getInt("pLove"));
            pet.setpStrain(rs.getString("pStrain"));
            //将Pet对象放入集合
            list.add(pet);
        }
        return list;
    }
    3、public int requestRow(){
        //随便查一列数据的sql语句
        String sql="select pid from pet ";
        //调用查询的方法
        ResultSet rs=this.select(sql,null);
        //把结果集的浮标移到最后一行
        rs.last();
        //获取最后一行的行下标(从1开始的)
        int row=rs.getRow();
        return row;     
    }

三、创建一个Test包:

1、用接口的对象指向接口实现类的对象(多态)。
2、调用实现类的具体方法。

四、注意:
1、statement弊端:安全性比较差,拼接麻烦,所以引出其子类preparedStatement。
2、prepareStatement优点:1、安全性高。2、预编译sql语句,执行效率更高,开发都用这个。

五、解决乱码的办法:
1、第一个创建数据库与表时,设置为UTF-8;

    具体步骤:右击库名-->更改数据库-->数据库字符集

2、第二个把你的项目设置为UTF-8;

    具体步骤:右击项目-->properties-->Resource-->改为utf-8

猜你喜欢

转载自blog.csdn.net/weixin_42334396/article/details/82531777