JDBC连接mysql实现增删改查

一、JDBC简介
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。
二、准备工作

  • 导入对应jar包
    使用JDBC需要导入对应的jar包。具体数据库与对应jar包对应关系如下图所示:
    数据库与对应jar包
    另附:各种数据库对应的驱动类名和URL格式
    数据库与对应驱动及url
  • 在eclipse中导入jar方法为:在项目上单击右键选择“Build Path"——“configure Build Path···”,在Libraries中单击"Add External JARs…",选择所需要的jar包,之后单击“OK”退出即导入了所需jar包。
    导包
    三、使用JDBC操作数据库
  • 1.建立实体类
    这样做主要是为了便于操作和接口定义,是非必须的。
public class Student {
	
	private String id;
	private String name;
	private String sex;
	private String age;
	
	public Student(String id,String name,String sex,String age){
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}
	
	
	

}
  • 2.连接数据库
public class MyConnect {
	
	public static Connection getConn(){
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/myjdbc";
		String user = "user";
		String password = "password";
		Connection conn = null;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	public static Integer getAll(){
		Connection conn = getConn();
		String sql = "select * from student_info";
		PreparedStatement pst;
		try {
			pst = (PreparedStatement) conn.prepareStatement(sql);
			ResultSet rs = pst.executeQuery();
			int amount = rs.getMetaData().getColumnCount();
			while(rs.next()){
				for(int i = 1;i < amount + 1;i++){
					System.out.print(rs.getString(i) + "\t");
				}
			}
			
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public static int insert(Student student){
		Connection conn = getConn();
		String sql = "INSERT student_info (id,name,sex,age) VALUES(?,?,?,?)";
		PreparedStatement pst;
		int i = 0;
		try {
			pst = (PreparedStatement) conn.prepareStatement(sql);
			pst.setString(1, student.getId());
			pst.setString(2, student.getName());
			pst.setString(3, student.getSex());
			pst.setString(4,student.getAge());
			i = pst.executeUpdate();
			pst.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return i;
	}
	
	public static int delet(Student student){
		Connection conn = getConn();
		String sql = "DELETE FROM student_info where student_info.id = '" + student.getId() + "'";
		PreparedStatement pst;
		int i = 0;
		try {
			pst = (PreparedStatement) conn.prepareStatement(sql);
			i = pst.executeUpdate();
			pst.close();
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return i;
	}
		

	public static void main(String[] args) {
		System.out.println("插入前数据为:");
		MyConnect.getAll();
		MyConnect.insert(new Student("951", "王五", "男", "97"));
		System.out.println("插入后数据为:");
		MyConnect.getAll();
		System.out.println("删除后数据为:");
		MyConnect.delet(new Student("951", "王五", "男", "97"));
		MyConnect.getAll();

	}


	

}
  • 代码分析
    在上述对数据库进行增删改查的过程中,可以发现其共性部分,即通用的流程:

(1)创建Connection对象、SQL查询命令字符串;

(2)对Connection对象传入SQL查询命令,获得PreparedStatement对象;

(3)对PreparedStatement对象执行executeUpdate()或executeQurey()获得结果;

(4)先后关闭PreparedStatement对象和Connection对象。

可见,使用JDBC时,最常打交道的是Connection、PreparedStatement这两个类,以及select中的ResultSet类。查阅Java API手册可以了解其具体的意义和方法。
  下面引用的Java API的资料出自http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/index.html。
  
java.sql
接口 Connection

所有超级接口:
    Wrapper

public interface Connectionextends Wrapper

 

与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。

Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。此信息是使用 getMetaData 方法获得的。

PreparedStatemnt

java.sql 
接口 PreparedStatement

所有超级接口:
    Statement, Wrapper

所有已知子接口:
    CallableStatement

public interface PreparedStatementextends Statement

表示预编译的 SQL 语句的对象。

SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

 

常用方法

 boolean  execute()

          在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。

 ResultSet  executeQuery()

          在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。

 int  executeUpdate()

          在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。

ResultSet

  
java.sql 
接口 ResultSet

所有超级接口:
    Wrapper

所有已知子接口:
    CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, RowSet, SyncResolver, WebRowSet

public interface ResultSetextends Wrapper

表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过 JDBC 连接 MySQL 数据库,并实现增删改查操作。以下是一个简单的示例代码: ```java import java.sql.*; public class JdbcExample { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/test"; static final String USER = "root"; static final String PASS = "password"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { // 注册 JDBC 驱动器 Class.forName(JDBC_DRIVER); // 打开连接 System.out.println("连接数据库..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); // 执行查询 System.out.println("创建查询..."); stmt = conn.createStatement(); String sql = "SELECT id, name, age FROM student"; ResultSet rs = stmt.executeQuery(sql); // 处理结果集 while (rs.next()) { // 获取数据 int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); // 显示数据 System.out.print("ID: " + id); System.out.print(", Name: " + name); System.out.println(", Age: " + age); } // 关闭连接 rs.close(); stmt.close(); conn.close(); } catch (SQLException se) { // 处理 JDBC 错误 se.printStackTrace(); } catch (Exception e) { // 处理 Class.forName 错误 e.printStackTrace(); } finally { // 关闭资源 try { if (stmt != null) { stmt.close(); } } catch (SQLException se) { } try { if (conn != null) { conn.close(); } } catch (SQLException se) { se.printStackTrace(); } } } } ``` 上述代码实现了查询操作,如果要实现增删改操作可以使用 PreparedStatement 来执行 SQL 语句。例如,插入数据的示例代码如下: ```java // 创建 PreparedStatement 对象 String sql = "INSERT INTO student (name, age) VALUES (?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); // 设置参数 pstmt.setString(1, "Tom"); pstmt.setInt(2, 20); // 执行更新 int rows = pstmt.executeUpdate(); // 关闭资源 pstmt.close(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值