原生jdbc操作mysql数据库详解
首先给大家说一下使用JDBC链接数据库的步骤
1.加载链接数据库驱动
2.建立数据库链接
3.创建数据库操作对象
4.编写sql语句,执行sql语句
5.获取结果集
6.释放资源
我这边采用的是maven构建工具创建的java项目;如果不使用maven创建的话也没有什么不同,因为都是在main方法里面写的嘛!
只是需要导入jdbc需要的jar包即可,然后下面建项目的这些步骤就可以直接跳过了
首先点击新建项目
如果你的这里没有Maven Project 这个选项的话,那就直接点击Other,有的话就直接点击Maven项目即可!
点完以后在这里搜索maven也是一样的,选择Maven Project 然后next
直接使用默认 继续next
找到我选中的那一条 ,其他地方不用填 ,继续next
主要目的不是为了构建项目,所以这上面两个需要填写的地方可以随意些,上面的代表包名 ,第二个代表项目名,然后Finish
然后在pom.xml里面加入如下配置;我是不记得需要那几个jar包了,所以直接全部放进去了,哈哈哈哈哈
现在开始就要写代码了,首先建一个main方法,很简单的写一个例子
package com.TestJDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * Hello world! * */ public class Demo01 { public static void main( String[] args ) { Connection connection=null ; Statement statement=null; ResultSet resultSet = null; try { //1.加载驱动(根据反射获取class/根据包名获取class) Class.forName("com.mysql.jdbc.Driver"); //2.获取连接对象(参数解释,第一个是代表jdbc的方式访问mysql数据库,localhost代表是访问本地的,3306端口号,db_test01代表数据库名字,后面两个代表账户密码 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_test01","root","root"); //3.获取执行sql对象 statement = connection.createStatement(); //4.编写sql语句,执行sql String sql="select * from stu"; //5.获取结果集 ,查询操作使用executeQuery,增,删,改使用statement.executeLargeUpdate(sql) //如果是增删改操作,失败了会返回0 resultSet = statement.executeQuery(sql); if(resultSet.next()){
//获取字符串类型的值 String name = resultSet.getString("name"); String sex = resultSet.getString("sex");
//获取int型的值 int age = resultSet.getInt("age"); System.out.println(name+" ,"+sex+","+age); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //6.释放连接 if(resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(statement!=null){ try { statement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(connection!=null){ try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
下面改了一下,是一个预编译的案例
package com.TestJDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * Hello world! * */ public class Demo01 { public static void main(String[] args) { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; try { // 1.加载驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.获取连接对象(参数解释,第一个是代表jdbc的方式访问mysql数据库,localhost代表是访问本地的,3306端口号,db_test01代表数据库名字,后面两个代表账户密码 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_test01", "root", "root"); // 3.获取执行sql对象 // 4.编写sql语句,执行sql(预编译,用?号代替值) String sql = "select * from stu where id=?"; statement = connection.prepareStatement(sql); //然后再设置进去,可以设置多个值 statement.setString(1, "1"); resultSet = statement.executeQuery(); // 5.获取结果集 // ,查询操作使用executeQuery,增,删,改使用statement.executeLargeUpdate(sql) // 如果是增删改操作,失败了会返回0 if (resultSet.next()) { // 获取字符串类型的值 String name = resultSet.getString("name"); String sex = resultSet.getString("sex"); // 获取int型的值 int age = resultSet.getInt("age"); System.out.println(name + " ," + sex + "," + age); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { // 6.释放连接 if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (statement != null) { try { statement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?