一、 JDBC访问数据库基本步骤:
1、查询:
package jdbc1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.management.RuntimeErrorException;
import com.mysql.cj.jdbc.Driver;
public class JDBC1 {
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1、注册并加载驱动
Driver driver = new Driver();
//DriverManager.registerDriver(driver);//这种注册方式会注册两次,推荐使用下面那种
Class.forName("com.mysql.cj.jdbc.Driver");
// 2、获取连接对象
String url = "jdbc:mysql://127.0.0.1:3306/student";
String user = "root";
String password = "";
con = DriverManager.getConnection(url, user, password);
// 3、获取操作数据库的对象
stmt = con.createStatement();
// 4、向数据库发送查询语句
String sql = "select * from student ";
rs = stmt.executeQuery(sql);
// 5、遍历结果集,获取查询对象
while (rs.next()) {// 遍历一行后,才会跳转到下一行
int sno = rs.getInt("sno");//
String sname = rs.getString(2);// 和上一行不同的写法
String sex = rs.getString(3);
System.out.println(sno + " " + "" + sname + " " + sex);
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
// 6.关闭连接,释放资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
2、更新:
package jdbc1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBC1 {
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
// 2、获取连接对象
String url = "jdbc:mysql://127.0.0.1:3306/student";
String user = "root";
String password = "";
con = DriverManager.getConnection(url, user, password);
// 3、获取操作数据库的对象
stmt = con.createStatement();
// 3.创建SQL语句
String sql = "insert into student values(121530601,'张三','女',16,6)";
// 4. 执行SQL语句
int row = stmt.executeUpdate(sql);
System.out.println(row);
} catch (Exception e) {
} finally {
// 5. 释放资源
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace(); // 打印异常
}
}
if (con != null) {
try {
con.close();
} catch (Exception e) {
e.printStackTrace(); // 打印异常
}
}
}
}
}
二、ResultSet更新数据
- ResultSet是否滚动
- ResultSet是否可更新
- 查询学号为121530602的学生的基本信息输出后修改其姓名:
String sql = "select * from student where sno=121530602";
rs = stmt.executeQuery(sql);
// 5、遍历结果集,获取查询对象
System.out.println("学 号"+"\t\t"+"姓名"+"\t\t"+"性别"+"\t\t"+"年龄"+"\t\t"+"班级");
while (rs.next()) {// 遍历一行后,才会跳转到下一行
int sno = rs.getInt("sno");//
String sname = rs.getString(2);// 和上一行不同的写法
String sex = rs.getString(3);
String age = rs.getString(4);
String Class = rs.getString(5);
System.out.println(sno + "" + "\t\t" + sname + "\t\t" + sex+"\t\t"+age+"\t\t"+Class);
}
rs.absolute(1);
rs.updateString("sname","赵四");
rs.updateRow(); //将当更新保存到数据库
- 输出所有学生的所有信息,然后添加一名新学生:
// 4、向数据库发送查询语句
String sql = "select * from student";
rs = stmt.executeQuery(sql);
// 5、遍历结果集,获取查询对象
System.out.println("学 号"+"\t\t"+"姓名"+"\t\t"+"性别"+"\t\t"+"年龄"+"\t\t"+"班级");
while (rs.next()) {// 遍历一行后,才会跳转到下一行
int sno = rs.getInt("sno");//
String sname = rs.getString(2);// 和上一行不同的写法
String sex = rs.getString(3);
String age = rs.getString(4);
String Class = rs.getString(5);
System.out.println(sno + "" + "\t\t" + sname + "\t\t" + sex+"\t\t"+age+"\t\t"+Class);
}
rs.moveToInsertRow(); //指定游标到那一行;不写则按主键排序。
rs.updateString("sno","121530605");
rs.updateString("sname","老八");
rs.updateString("sex","男" );
rs.updateInt("age", 26);
rs.updateInt("Class",8);
rs.insertRow();
三、预编译语句实现数据更新**
- 添加数据:
PreparedStatement pStmt = con.prepareStatement("insert into student (name,pwd,email) values(?,?,?)");
pStmt.setString(1,"dream");
pStmt.setString(2,"111");
pStmt.setString(3, "[email protected]");
int rtn= pStmt.executeUpdate();
- 修改数据:
PreparedStatement pStmt = con.prepareStatement("update student set pwd=?,email=? where name=?");
pStmt.setString(1,“222");
pStmt.setString(2,“[email protected]");
pStmt.setString(3,“dream");
int rtn= pStmt.executeUpdate();
- 删除数据:
PreparedStatement pStmt = con.prepareStatement("delete from student where name=?");
pStmt.setString(1,"dream");
int rtn= pStmt.executeUpdate();