jdbc数据库连接六步走
- 注册驱动 =======
注册驱动的两种方法
Class.forName("com.mysql.cj.jdbc.Driver");
//mysql8.+版本
Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
2.获取连接
String url = "jdbc:mysql://127.0.0.1:3306/tests";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url,user,password);
3.获取数据库操作对象(Statement专门执行sql语句的)
Statement stmt = conn.createStatement();
4.执行sql语句
下面是增删改
//返回值是影响数据库中的记录条数
String sql = "delete from dept where deptno = 40";
boolean count = stmt.executeUpdate(sql);
下面是查询时的语句
String sql = "select empno,ename,sal from emp";//执行查询语句操作
ResultSet rs = stmt.executeQuery(sql);
主要是executeQuery和executeUpdate的区别。
5.查询语句的时候对获取到的数据进行处理
while(rs.next()) { //如果指向的行有数据,取数据
//getString()是指不管数据库中的数据是什么类型,返回的数据类型都是String
String empno = rs.getString("empno");
String ename = rs.getString("ename");
String sal = rs.getString("sal");
System.out.println(empno+','+ename+','+sal);
}
6.释放资源
if(rs!=null) {
try{
rs.close();
}catch(Exception e) {
e.printStackTrace();
}
}
if(stmt!=null) {
try{
stmt.close();
}catch(Exception e) {
e.printStackTrace();
}
}
if(conn!=null) {
try{
conn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
jdbc数据库连接获取数据完整代码
package cn.tests.jdbc;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class jdbc02 {
public static void main(String\[\] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs =null;
try {
//注册驱动
// Driver driver = new com.mysql.cj.jdbc.Driver();
// DriverManager.registerDriver(driver);
Class.forName("com.mysql.cj.jdbc.Driver");
//获取连接
String url = "jdbc:mysql://127.0.0.1:3306/tests";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url,user,password);
System.out.println("数据库连接对象 ="+conn);
//获取数据库操作对象(Statement专门执行sql语句的)
stmt = conn.createStatement();
//需要执行的sql
String sql = "select empno,ename,sal from emp";
//执行查询语句操作
rs = stmt.executeQuery(sql);
//处理查询结果集
//rs光标指向的是第一条数据之前的空的位置
//rs.next()代表下一个光标,如果下一光标中有数据,就返回ture
//System.out.println(rs.next());//如果直接执行该代码,返回的值是ture
//如果指向的行没有数据,返回false
// boolean flag1 = rs.next();
//System.out.println(flag1);//ture
while(rs.next()) { //如果指向的行有数据,取数据
//getString()是指不管数据库中的数据是什么类型,返回的数据类型都是String
String empno = rs.getString("empno");
String ename = rs.getString("ename");
String sal = rs.getString("sal");
System.out.println(empno+','+ename+','+sal);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
//释放资源
if(rs!=null) {
try{
rs.close();
}catch(Exception e) {
e.printStackTrace();
}
}
if(stmt!=null) {
try{
stmt.close();
}catch(Exception e) {
e.printStackTrace();
}
}
if(conn!=null) {
try{
conn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
}