new->project,建立一个“Java Projec..._eclipse jdbc">
当前位置:   article > 正文

Eclipse中配置和使用JDBC操作MySQL_eclipse jdbc

eclipse jdbc

Eclipse中配置和使用JDBC操作MySQL

一、下载MySQL的JDBC驱动

访问网址:https://mvnrepository.com
搜索mysql-connector-java
在这里插入图片描述
点进去后,选择要下载的版本:

在这里插入图片描述
点"jar",保存!

二、使用JDBC驱动操作Mysql表

1、建立工程

Eclipse中在File->new->project,建立一个“Java Project”工程。

输入工程名称MyJDBC,下一步,点:Open Perspective,然后Finish,即建立了MyJDBC工程

2、导入驱动

Eclipse中导入方法如下:

  • 将下载jar文件,拷贝到工程文件目录(复制文件,到eclipse的MyJDBC工程上粘贴)
  • 在该jar文件上,右键build path ->add to build path

IDEA中导入方法如下:

  • 在工程根目录下创建一个lib文件夹, 将下载jar文件,拷贝到lib中
  • 打开File -> Project Structure -> Libraries ,点击“+”号,选择Java,选择下载的jar文件导入

3、Mysql数据库表JDBC操作步骤

(1)加载JDBC驱动程序
  • forName(String driverName)加载JDBC驱动
  • 不同数据库的JDBC驱动名称不同

Class.forName(“com.mysql.cj.jdbc.Driver”);

下图是常见的数据库驱动
在这里插入图片描述

(2)建立数据库连接
String URL = "jdbc:mysql://localhost:3306/jsp_mysql?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
String UNAME = "root";
String UPASS = "";
Connection  conn = DriverManager.getConnection(URL,UNAME,UPASS);
  • 1
  • 2
  • 3
  • 4
(3)数据库操作

数据库操作有三种方式(注意要定义不同的statement):

  • Statement对象执行静态SQL语句
Statement stmt = null;//定义静态语句
...
stmt = conn.createStatement();
String Sql = "delete from users where UserId=1 ";
int counts = stmt.executeUpdate(Sql);//有参数
if (counts>0) {
      System.out.println("操作成功");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • PreparedStatement执行动态SQL语句
 PreparedStatement stmt = null;//定义动态语句
 ...
String Sql = "delete from users where UserId=?";
stmt = conn.prepareStatement(Sql);
stmt.setString(1, 1);//设置参数值
//执行SQL,返回受影响的行数
int counts = stmt.executeUpdate();//无参数
if (counts>0) {
	System.out.println("操作成功");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • CallableStatement执行存储过程
 CallableStatement stmt = null;//定义存储过程语句
 ...
stmt = conn.prepareCall("{call delUser(?,?,?)}");
//设置参数值
stmt.setInt(1,1);
//执行SQL,返回结果
stmt.execute();//无参数的execute
stmt.registerOutParameter(2, Types.INTEGER);//设置过程调用的输出值类型
int delres = stmt.getInt(2);//取值
stmt.registerOutParameter(3, Types.INTEGER);
int rescounts = stmt.getInt(3);//取值
if (rescounts>0) {
	System.out.println("删除记录ID:"+i1+",删除了"+delres+"条,剩余"+rescounts+"条");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

其中 注:delUser存储过程内容:

	delete from users where UserId=p_id;
  select ROW_COUNT() into deleteUsers;
  select COUNT(UserId) from users into userCounts;
  • 1
  • 2
  • 3
(4)对执行结果进行分析处理

直接判断是否成功:

if ( stmt.executeUpdate(Sql)>0) {
	System.out.println("操作成功");
}
else{
   System.out.println(“操作失败");
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

提取出SQL查询语句返回的结果:

rs = stmt.executeQuery();
while (rs.next()) {
	int UId = rs.getInt("UserId");
	System.out.println("表记录:"+UId);
}
  • 1
  • 2
  • 3
  • 4
  • 5
(5)关闭连接

数据库操作完成,关闭JDBC对象,释放资源
关闭顺序和声明顺序相反:
1)关闭结果集ResultSet对象;
2)关闭Statement/PreparedStatement/CallableStatment对象;
3)关闭连接对象conn

try {
	if (rs!=null) rs.close();
	if (stmt!=null) stmt.close();
	if (conn!=null) conn.close();
} catch (Exception e2) {
	// TODO: handle exception
	e2.printStackTrace();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4、JDBC操作Mysql实例

  • 建立实验用数据库jsp_mysql和表Users(可借助于navicat工具)
    -例子结构如图:
    在这里插入图片描述
(1)静态SQL
  • 在MyJDBC工程src上右键new->class,建立一个JAVA Class,命名:JDBCTest
  • 插入数据库记录
    -源码如下:
import java.sql.*;
import java.util.Date;
public class JDBCTest {
   private static final String URL = "jdbc:mysql://localhost:3306/jsp_mysql?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
   private static final String UNAME = "root";
   private static final String UPASS = "";
   public static void updateDB(){	
   	Connection conn = null; //建立连接
   	Statement stmt= null;
   	try {
   		Class.forName("com.mysql.cj.jdbc.Driver");
   		//建立数据库连接
   		conn = DriverManager.getConnection(URL,UNAME,UPASS);
   		//建立SQL语句,并执行
   		stmt = conn.createStatement();
   		String Sql = "insert into users(UserName,UserPass,UserBirth, UserSubj,UserScores) values "
   				+ "('王五','',str_to_date('19950102', '%Y%m%d'),'计算机',99)";

   		//执行SQL,返回受影响的行数
   		int counts = stmt.executeUpdate(Sql);
   		if (counts>0) {
   			System.out.println("数据库操作成功");
   		}
   	}catch( ClassNotFoundException e) {
   		e.printStackTrace();
   	}
   	catch(SQLException e) {
   		e.printStackTrace();
   	}catch (Exception e) {
   		// TODO: handle exception
   		e.printStackTrace();
   	}
   	finally {
   		//关闭连接和语句
   		try {
   			if (stmt!=null) stmt.close();
   			if (conn!=null) conn.close();						
   		} catch (Exception e2) {
   			// TODO: handle exception
   			e2.printStackTrace();
   		}

   	}
   }

   public static void main(String[] args) {
   	updateDB();
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

右键run as->java application运行
对于update和delete只需更换Sql语句。

- 查询记录
-返回查询结果的语句:

		String Sql = "select * from users";
   		//执行SQL,返回受影响的记录结果集
   		rSet = stmt.executeQuery(Sql);
   		while (rSet.next()) {
   			int UId = rSet.getInt("UserId");
   			String Uname = rSet.getString("UserName");
   			Date Udate = rSet.getDate("UserBirth");
   			System.out.println("数据库记录结果:");
   			System.out.println("UserId:"+UId );
   			System.out.println("UserName:"+Uname); 
   			System.out.println("UserBirthday:"+Udate);
   		}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
(2)动态SQL

修改静态SQL程序,使用如下语句,即可完成动态SQL:

- 增删改操作

   		stmt = conn.prepareStatement(Sql);
   		//设置参数值
   		stmt.setString(1, "XX");
   		stmt.setDate(2,XX);
   		stmt.setInt(3, XX);
   		int counts = stmt.executeUpdate();//无参数的execute
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

- 查询

			String Sql = "select * from users where UserName like ?";
			stmt = conn.prepareStatement(Sql);
			stmt.setString(1, "%一%");
			//执行SQL,返回记录结果集
			rs = stmt.executeQuery();

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/66931
推荐阅读
相关标签
  

闽ICP备14008679号