1. 加载JDBC驱动
使用java反射机制中的方法forName()进行加载
Class.forName(“com.mysql.jdbc.Driver”);
2. 建立数据库连接
驱动管理类DriverManager使用特定的驱动程序,
通过getConnection(Stringusr)方法建与某个特定数据库的连接。
每个JDBC驱动都对应一个URL地址用于自我标识
jdbc:mysql://localhost:3306/mysql;
连接MySQL:
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/sample",username,password);
或
String url="jdbc:mysql://localhost/sample"; //sample表示的是数据库,localhost为主机或服务器
String username, //登录MySQL数据库的用户名
String password; //登录MySQL数据库的密码
Connection con=DriverManager.getConnection(url,username,password);
3. 创建一个语句对象
//1.执行静态SQL语句。通常通过Statement实例实现。
Statement stmt=con.createStatement();
//2.执行动态SQL语句。通常通过PreparedStatement实例实现。
PrepareStatement pstmt=con.preparedStatement(sql);
4. 执行SQL语句
- 如果发送的SQL语句是SELECT语句则需要执行executeQuery()方法
- 如果发送的是SQL语句是Insert()语句、Create语句、Delete语句和Update语句则需要执行executeUpdate()方法
- 执行executeQuery()方法后,返回的是一个结果集(ResultSet)对象
- 执行executeUpdate()方法后,返回的并不是结果集,而是该操作影响数据库的行数。
5. 处理结果集
- 从返回的结果集中获取数据,通过结果集对象调用getXXX()方法进行获取
- 通过JavaBean的setXXX()方法将获取到的数据设置在其中
- 再将整个JavaBean放入集合中,以方便以后进行获取数据。
6. 关闭数据库连接
结果集处理完成之后,释放资源需要在finally语句块中首先关闭语句对象,再关闭数据库连接
stmt.close(); //关闭语句对象。
conn.close(); //关闭数据库连接。
顺便说一下Statement和PrepareStatement的区别
1. PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程
2. 使用 Statement 对象在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。 PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
3. statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译的, preparedstatement支持批处理4.prepareStatement可以替换变量
在SQL语句中可以包含?可以用ps=conn.prepareStatement("select * from Cust where ID=?");
int sid=1001;
ps.setInt(1, sid);
rs = ps.executeQuery();
可以把?替换成变量。
而Statement只能用
int sid=1001;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from Cust where ID="+sid);
来实现。