Java连接数据库具体有5个步骤:
①加载数据库驱动文件
②建立Java和数据库之间的连接通道
③产生负责传递SQL命令的对象
④执行
⑤关闭数据库
具体操作如下:以MySQL数据库为例
package connectdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Demo01 {
public static void main(String[] args) {
try {
//①:加载驱动文件
Class.forName("com.mysql.cj.jdbc.Driver");
//②:建立Java和数据库之间的连接通道
String url = "jdbc:mysql://localhost:3306/test1?characterEncoding=utf8&serverTimezone=UTC";
//test1表示操作的数据库的名字
String user = "root";//数据库用户名
String password = "weak";//数据库密码
Connection conn = DriverManager.getConnection(url,user,password);
//③:产生负责传递SQL命令的对象
String sql = "insert into userinfo values(NULL,'小爽','女',27,'上海','123456',NULL)";//往表中操作数据
PreparedStatement ps = conn.prepareStatement(sql);
//④:执行
int num = ps.executeUpdate();
System.out.println(num+"行受影响");
//⑤关闭数据库
ps.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
以上是对数据库中的表进行插入操作;
因为对数据库的增、删、改操作没有返回结果,所以不需要ResultSet类处理返回结果。增删改只需要改变SQL语句即可
(1)增操作:
String sql = "insert into values (NULL,'小爽','女',27,'上海','123456',NULL)";
注意:这里的属性要和数据库中表的属性一一对应
(2)删除操作
String sql = " delete from userinfo where username='张三' ";
(3)修改操作
String sql = "update userinfo set useage=22 where username='张三' ";
查询操作,因为查询操作需要从数据库中返回要查询的结果,所以需要用ResultSet类来处理从数据库中查询的结果,和增删改操作有一点不同
package connectdbc;
import java.sql.*;
public class Demo02 {
public static void main(String[] args) {
try {
//第一步:加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//第二步:建立Java和数据库之间的联系
String url = "jdbc:mysql://localhost:3306/test1?characterEncoding=utf8&serverTimezone=UTC";
String user = "root";
String password = "weak";
Connection conn = DriverManager.getConnection(url,user,password);
//第三步:产生负责传递SQL命令的对象
String sql = "select * from userinfo";//查询语句
PreparedStatement ps = conn.prepareStatement(sql);
//第四步:执行
ResultSet rs = ps.executeQuery();//执行 SQL 查询,并返回该查询生成的 ResultSet 对象
while(rs.next()){//判断是否还有下一个返回结果
int id = rs.getInt(1);
String name = rs.getString(2);
String sex = rs.getString(3);
int age = rs.getInt(4);
System.out.println(id+"\t"+name+"\t"+sex+"\t"+age);
}
//第五步:关闭数据库
rs.close();
ps.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
可以看出查询和增删改操作的不同,除了多了一个ResultSet类来处理返回结果外,执行sql的语句也不同,查询是executeQuery(),而增删改是executeUpdate()。