JDBC—基于Mysql的基本操作

一、 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();
发布了56 篇原创文章 · 获赞 60 · 访问量 9726

猜你喜欢

转载自blog.csdn.net/qq_43531669/article/details/105124990
今日推荐