JDBC连接数据库

总结了JDBC连接数据库具体步骤的的实现

JDBC连接数据库的步骤

  1. 注册驱动
  2. 获取连接
  3. 获取数据库操作对象
  4. 执行sql语句
  5. 处理查询结果集
  6. 释放资源

步骤的具体实现

注册驱动

注册驱动时,需要导入MySQL的驱动包mysql-connector-java-5.1.32.jar包,通过这个包才能时java程序能够连上数据库。如果导入后不能连接上数据库,可能是因为数据库的版本太高,需要新一级的驱动包mysql-connector-java-8.0.24.jar包。

具体实现

Class.forName(com.mysql.jdbc.Driver)  //一般通过反射来注册驱动

获取连接

获取连接时,一般需要获得数据库的url,用户名,和密码然后通过Connection类获取连接

具体实现

// url表示数据的url地址 url: jdbc:mysql://访问的地址:3306/数据库名 3306是MySQL的默认端口
// user表示数据库的用户名 user: 用户名
// user表示数据库的密码 password: 密码
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url,user,password);

获取数据库操作对象

获取数据库操作对象可以通过StatementPreparedStatement两种方式来获取数据库操作对象。
Statement: 操作数据库时是直接编译SQL语句,是一致拼接字符串的方式来拼接SQL语句,这种方式来操作数据库对象,容易造成SQL注入现象。
PreparedStatement: 操作数据库时,是先将SQL语句预编译一遍,然后将值注入进来,这样不易造成SQL注入。
虽然Statement易造成SQL注入现象,但是在有些需求时,还是会用到Statement操作数据库。例如查询出来的数据需要动态输入是否排序时就需要Statement实现

具体实现

Statement stmt = conn.createStatement(); // Statement方式获取数据库操作对象
PreparedStatement ps = conn.prepareStatement(sql);  //PreparedStatement方式获取,预编译SQL语句

执行SQL语句

如果是执行增删改(DML)语句就需要使用**executeUpdate()方法,如果执行的是查询(DQL)语句就需要使用executeQuery()**方法,使用查询语句才会有结果集返回。

具体实现

String sql = "select e.ename,e.sal from emp e";  //DQL语句
stmt.executeQuery(sql);  //Statement方式
ps.executeQuery();  //PreparedStatement方式 因为先执行了SQL语句所以在这就不用再传入sql了String sql = "update emp set sal = sal-1000 where empno=?"; // DQL语句 PreparedStatement方式
//PreparedStatement中下标没有0所以从1开始往后添加第一个要注入的值就是1第二给为2依次往后推
ps.setInt(1,7369); //将值注入进SQL语句中 因为已经执行过SQL语句了,这里只需将值传入就行String sql = "update emp set sal = sal-1000 where empno= "+num+""; // DQL语句 Statement方式
stmt.executeUpdate(sql);//注意ps和stmt是由上一步获取数据库连接对象获得的对象

要导入数据是什么类型就用set什么类型的方法

处理查询结果集

查询(DQL)语句才会有结果集,一般将结果集用ResultSet类封装

具体实现

String sql = "select ename,sal from emp";
ResultSet rs = stmt.executeQuery(sql);  //接收返回的结果集
ResultSet rs = ps.executeQuery();
while(rs.next()){  //rs.next()表示将光标往下一行读取下面一行的数据//根据字段名来读取数据rs.getString("ename"); //获取查询出来的ename 数据拿到了后续要怎么操作就看自己的需求了,这里就不做演示rs.getDouble("sal");  //获取查询出来的sal//根据下标来读取数据rs.getString(1); //获取查询出来的enamers.getDouble(2);//获取查询出来的sal
}

释放资源

释放资源时,需要先进行判断是否存在这个资源,然后再将这个资源关闭,一般是从后往前关闭,先创建的后关闭。

具体实现

             if (rs != null){try{rs.close();}catch (SQLException e){e.printStackTrace();}}if (stmt != null){try{stmt.close();}catch (SQLException e){e.printStackTrace();}}if (conn != null){try{conn.close();}catch (SQLException e){e.printStackTrace();}}

总结

一般来说,获取数据连接时数据库的url,用户名,密码,驱动类型一般写在db.properties配置文件中,因为这样以后数据库信息更改之后易于维护。并且将获取数据连接,释放资源一般封装在一个工具类DBUtlis类中,封装之后就不会经常性的写重复的代码,下面展示一个完整的JDBC连接操作。

db.properties配置文件的编写

db.properties配置文件需要写在resourses包中

driver=com.mysql.jdbc.Driver   //驱动类型
url=jdbc:mysql://localhost:3306/test   //url
user=root  //数据库用户名
password=123456  //数据库密码

DBUtils文件的编写

// 数据库工具类
public class DBUtils {//工具类中的构造方法一般都是私有化的,为什么?//构造方法私有化是为了防止new对象private DBUtils(){}//类加载时绑定属性资源文件 通过次类来绑定db.properties文件以此来获取db.properties文件中的信息private static ResourceBundle bundle = ResourceBundle.getBundle("resources/db");//注册驱动static {try {Class.forName(bundle.getString("driver"));  } catch (ClassNotFoundException e) {e.printStackTrace();}}//获取数据库连接对象public static Connection getConnection() throws SQLException {String url = bundle.getString("url");  //获取urlString user = bundle.getString("user"); //获取数据库用户名String password = bundle.getString("password"); //获取数据库密码Connection conn = DriverManager.getConnection(url,user,password);return conn;}//释放资源public static void close(Connection conn, Statement stmt, ResultSet rs){if (rs != null){try{rs.close();}catch (SQLException e){e.printStackTrace();}}if (stmt != null){try{stmt.close();}catch (SQLException e){e.printStackTrace();}}if (conn != null){try{conn.close();}catch (SQLException e){e.printStackTrace();}}}
}

测试类的编写

这里用PreparedStatementa来操作对象

// 测试DBUtils
public class JDBCTest05 {public static void main(String[] args) {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = DBUtils.getConnection();String sql = "select ename,sal from emp where ename like ?";ps = conn.prepareStatement(sql);ps.setString(1,"%s%");rs = ps.executeQuery();while (rs.next()){System.out.println(rs.getString("ename")+","+rs.getDouble("sal"));}} catch (SQLException e) {e.printStackTrace();}finally {DBUtils.close(conn,ps,rs);}}
}

JDBC连接数据库(详细步骤)相关推荐

  1. JDBC连接数据库详细步骤

    一.先创建一个项目 二.打开数据库并启动连接 (我是在IDEA中写的,提前导包) 三.不会导包就在Maven中导,在pom.xml中的dependencise放,版本号看自己要高版本还是低版本.放进去 ...

  2. JDBC 连接数据库的步骤

    大家好,今天我和大家分享一下JDBC 连接数据库的步骤. JDBC 连接数据库的步骤: 1.加载数据库驱动 2.获取数据库的连接 3.获取用于执行sql命令的执行对象 4.执行 5.处理结果 6.回收 ...

  3. JDBC编程——JDBC连接数据库六步骤

    JDBC编程的6步骤 实现数据库连接之前,我们要先理解一下URL(统一资源定位器): 是跟数据库进行连接的时候,用来连接到指定远程数据库标识符. 可以在该URL中指定连接用户名和密码,同时,对于不同的 ...

  4. jdbc连接数据库的步骤(转载)

    http://hzy3774.iteye.com/blog/1689525 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java. ...

  5. JDBC连接数据库详细讲解及代码演示

    目录 JDBC介绍 JDBC访问数据库编码步骤 1. 准备好相应的jar包 2. 创建lib目录 3. 导入下载好的jar包 4. 简单的CURD 5. PreparedStatment完成CURD ...

  6. centos7 关于php使用pdo扩展连接数据库详细步骤

    1 yum install httpd.x86_64 (安装http.x86) 2 yum install php(安装php) 3 systemctl start httpd.service(重启h ...

  7. JDBC连接数据库的步骤

    String user="root";String password="123";String url="jdbc:mysql://localhost ...

  8. Java中JDBC连接数据库(MySQL)

     JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一个功能都放 ...

  9. JDBC连接数据库过程

    JDBC连接数据库过程 时间: 2009-03-03 20:43来源: 作者: 点击: <script src="http://www.topkc.cn/plus/count.php? ...

最新文章

  1. Mysql中查询速度的优化
  2. bzoj 2654 bzoj 3675 总结
  3. js 操作vuex数据_Vue.js中使用Vuex实现组件数据共享案例
  4. snapchat_我刚刚在Snapchat获得开发人员职位。
  5. 中国人终于开始排队了
  6. 【论文笔记】Factorizable Graph Convolutional Networks
  7. AddHandler php5-script .php\AddType text/html .php和AddType application/x-httpd-php .php的区别?...
  8. 接口自动化测试框架搭建(6、对接口进行mock的方法封装)--python+HTMLTestRunnerCN+request+unittest+mock+db
  9. 基于jAVAWeb停车场管理系统
  10. 打开PDF时显示please wait...怎么办?没有安装pdf阅读器经常出现的提示信息
  11. RK3399外设驱动之MIPI
  12. 【操作系统】进程间通信 — 消息队列
  13. grub4dos引导启动linux,grub4dos中怎么样调用syslinux引导
  14. win7系统下装ubantu
  15. 三件套都有什么_床上用品三件套,四件套,五件套,七件套分别包括的是哪些...
  16. 单词1(-cess -ceed -cede -gress -gred -grad)=to go、go
  17. 英特尔宣布推出新的“ Compute Stick”-一种笔式驱动器大小的PC
  18. docker 文件操作
  19. 软件项目管理(CMMI成熟度)实践——之决策分析(1)
  20. Cadence ETS v8.1 Linux\

热门文章

  1. Spark Machine Learning(SparkML):机器学习(部分二)
  2. 计算机学院学生划分哪些专业,计算机科学与工程学院2020年大类招生学生专业分流工作实施方案...
  3. 微信小程序 对象的深浅拷贝
  4. 单片机串口不够用怎么办?
  5. vue父页面实时给子页面传值
  6. vue子组件修改父组件上的属性
  7. Zero-DCE++运行问题
  8. 论文阅读—Adaptive Graph Encoder for Attributed Graph Embedding
  9. HTB Mailroom WriteUp
  10. Elasticsearch java api操作(一)(Java Low Level Rest Client)