JDBC回顾

来源:互联网 发布:广东省造价软件 编辑:程序博客网 时间:2024/06/05 11:08

用了一段时间的Mybatis,突然感觉JDBC有点陌生,虽然Mybatis好用,但不能忘本啊,赶紧来回顾一下JDBC。
首先建立实体类:Car

package com.test;public class Car {    private Integer c_no;    private String c_name;    public Car() {        super();        // TODO Auto-generated constructor stub    }    public Car(Integer c_no, String c_name) {        super();        this.c_no = c_no;        this.c_name = c_name;    }    public Integer getC_no() {        return c_no;    }    public void setC_no(Integer c_no) {        this.c_no = c_no;    }    public String getC_name() {        return c_name;    }    public void setC_name(String c_name) {        this.c_name = c_name;    }    @Override    public String toString() {        return "Car [c_no=" + c_no + ", c_name=" + c_name + "]";    }}

再设置数据库的连接及数据操作(Mysql的连接jar包一定要记得导入,不然会报错):

package com.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class ConnectionToMysql {    private String url;//数据库的连接地址    private String user;//用户    private String password;//数据库登录密码    private String driverClass;//数据库驱动    private Connection connection;    private PreparedStatement preparedStatement;    {        url="jdbc:mysql:///mybatis";        user="root";        password="123456";        driverClass="com.mysql.jdbc.Driver";    }    public void getConnection() throws ClassNotFoundException, SQLException{        Class.forName(driverClass);        //建立数据库的连接        connection=DriverManager.getConnection(url,user,password);        System.out.println("connection!");//查询所有的Car    public List<Car> getAll(){        String sql="select * from car";        List<Car> carList=new ArrayList<>();        try {//使用preparedStatement(预编译的SQL语句,可以防止SQL注入),当然也可以使用Statement,但是一般建议使用preparedStatement.            preparedStatement=connection.prepareStatement(sql);//执行查询            ResultSet result= preparedStatement.executeQuery();//将查询出的结果封装成Car对象(由于不是ORM,不会自动封装,所以只能靠自己手动封装了)            while(result.next()){//result.getxxx()中的参数可以是表中对应的列表名,也可以是索引值(列相应的顺序)                int c_no=result.getInt("c_no");                String c_name=result.getString("c_name");                System.out.println(c_no+"----"+c_name);                Car car=new Car(c_no,c_name);                carList.add(car);            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return carList;    }//查询指定no的Carpublic Car queryByNo(int c_no ){        String c_name=null;        //使用?表示占位符        String  sql="select c_name from car where c_no = "+no;        try {            //使用preparedStatement(预编译)            preparedStatement=connection.prepareStatement(sql);            //给占位符赋值            preparedStatement.setInt(1, c_no);            //执行查询            ResultSet rs=preparedStatement.executeQuery();            while(rs.next()){                c_name=rs.getString("c_name");            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return new Car(c_no,c_name);    }}//关闭连接public void closeMysql() throws Exception{        con.close();    }

由于想偷懒,并没有将操作数据的方法写入Dao类,此处也省略了增加、修改、删除,但大体操作也差不了。
那么做个简单的JDBC使用总结:

-加载驱动,及连接细节(必须进入相应Jar包);
- 建立连接;
- 使用preparedStatement/statement来进行操作数据,执行时使用preparedStatement/statement.executeQuery()(查询)/execute()(增、删、改);
- 关闭数据库的连接(数据涉及到资源,所以要及时的关闭)。

不是ORM,自己要写封装代码,是真的难受!!

原创粉丝点击