理解JDBC相关类和接口
1. Driver 类
Driver
是Mysql定义的类,下面代码用反射的方式把Driver
加载到内存,从而该类就可以使用了。
Class.forName( “com.mysql.jdbc.Driver”);
**注: Mysql到5版本之后,这条语句可以省略不写 **
2. DriverManager类
Driver
加载到内存后,会注册到DriverManager
中。当DriverManager
调用getConnection
方法时,就建立起了驱动程序和数据库之间的连接。并且返回链接对象Connection
给用户。
获取链接对象时,需要提供一些参数,mysql的用户名,密码,还有就是url地址,格式如下:
jdbc:mysql://ip地址:端口号/数据库名?参数键值对1&参数键值对2
注:Driver类有一段静态代码,有这样一条语句
DriverManager.registerDriver(new Driver());
Driver用反射加载到内存时,会自动执行静态代码块,从而这条语句被执行,生成Driver对象,并注册到DriverManager中。
3. Connection接口
Connection
对象代表与数据库的链接,也就是已经加载的Driver和数据库之间的链接。得到Connection
链接说明Java程序和Mysql数据库已经建立起了链接,接下来就可以通过代码操作数据库了。
- 使用
Connection
对象可以得到sql执行对象statement
,分为两种情况:- 普通sql——Statement:
conn.createStatement();
- 预编译sql——prepareStatement:
conn.prepareStatement(sql);
- 普通sql——Statement:
使用Connection还可以管理事务(后续补上)
4. Statement
这两个都用来执行sql语句,主要有以下几个形式
executeUpdate(sql)
方法:
用来执行DDL和DML(增删改)类的sql语句,返回值是0表示执行成功,或者数字表示本次执行影响了多少行。
String sql = "update student set name='王五' where id=3";
int count = sm.executeUpdate(sql);
if(count>0){
System.out.println("修改成功!");
}else{
System.out.println("修改失败!");
}
executeQuery(sql)
方法:
用来查询数据,返回一个结果集
String sql = "select * from student";
ResultSet rs = sm.executeQuery(sql);
sm.executeUpdate(sql);
while(rs.next()){
System.out.println(rs.getInt(1)+":"+rs.getString("name"));
}
5. 查询结果接口:ResultSet
Statement执行SQL语句后,有时会返回结果集ResultSet。结果集通常是一张表,其中有查询所返回的标题及数据值
完善上个任务,补全增删改查全部代码,如下
package com.qiu.jdbc;
import java.sql.*;
public class test3 {
private static Connection conn;
private static Statement stmt;
private static ResultSet rs;
private static String sql;
public static Connection getConnection() throws SQLException {
String url = "jdbc:mysql://localhost:3306/ideaone";
String userName = "root";
String password = "root";
Connection con = DriverManager.getConnection(url,userName,password);
return con;
}
public static void insertSql() throws Exception {
conn = getConnection();
stmt = conn.createStatement();
sql = "insert into student (name, age, class)\n" +
"values (\"赵六地\",23,\"二班\")";
int n = stmt.executeUpdate(sql);
if(n>0)
System.out.println("插入成功");
else
System.out.println("插入失败");
stmt.close();
conn.close();
}
public static void deleteSql() throws SQLException {
conn = getConnection();
stmt = conn.createStatement();
sql ="delete from student where class='一班'";
int n = stmt.executeUpdate(sql);
if(n>0)
System.out.println("删除成功,删掉了"+n+"行数据");
else
System.out.println("删除失败");
stmt.close();
conn.close();
}
public static void updataSql() throws SQLException {
conn = getConnection();
stmt = conn.createStatement(); String sql = "update student set name='王五' where id=3";
int count = stmt.executeUpdate(sql);
if(count>0){
System.out.println("修改成功!");
}else{
System.out.println("修改失败!");
}
stmt.close();
conn.close();
}
public static void querySql() throws Exception {
conn = getConnection();
stmt = conn.createStatement();
sql = "select * from student where class='二班'";
rs = stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getInt(1)+":"+rs.getString("name"));
}
stmt.close();
conn.close();
}
public static void main(String[] args) throws Exception {
querySql();
}
}
可以看出,使用Java语言访问操作数据库,基本步骤比较固定,加载驱动——得到链接——创建statement语句——写sql语句——执行——结果。这里面除了写sql语句,其余都是固定模式。Sql语句可以在idea中写,有提示功能
\6. 在Idea中配置Mysql
数据库我们一直是通过sqlyog来操作mysql的。在idea中,也可以建立和mysql的连接,不仅可以查看数据库操作的sql代码,还可以快速写出sql语句,因为idea提供了强大的代码提示补全功能。在Idea中配置mysql方法如下:
l 在idea最右侧点击database,然后点击加号,选择data source—mysql
Host一般默认是localhost,指的是要链接哪个主机的mysql数据库
填好mysql的用户名,密码,要链接的数据库名字
注意一定要选好Driver,mysql驱动
l 添加成功后,可以在idea中查看数据库信息,表等
l 单击编辑按钮,还可以在idea中编辑执行sql语句,有自动提示功能,敲入几个字母回车即可自动填充