JDBC连接数据库
Posted 施莱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC连接数据库相关的知识,希望对你有一定的参考价值。
JDBC连接数据库
文章目录
1、jdbc连接数据库
如果小伙伴迫切想要知道如何用jdbc连接数据库,那么请看下面,有完整连接数据库的代码,和图示。如果小伙伴想深入了解jdbc,不要急,代码演示后面,有详解。
数据库建表参考文献 点击蓝字超链接跳转。
小伙伴如果想要连接数据库,那么你是不是已经创建好数据库表了呢,我这里给出一个表,供大家参考,实现代码时会用到,大家可以比照着看。
在这里再说明一下,如果没有数据库jdbc驱动包,即使你将以下代码写完也是无法运行成功的,
因此这里我会给一个超链接,小伙伴可以参考下载(https://blog.csdn.net/u014453898/article/details/79017767)
数据库jdbc驱动包放入的位置 步骤:
1、找到刚刚从上面下载的jar包,黏贴到项目的lib目录下(如果没有lib目录,就自己创建一个文件夹,命名为lib)
2、右击jar包选择Add as Library,然后JDBC的准备工作中Java的部分就算完成啦!
这样准备工作已经做好,将代码写入即可。
代码实现:
package JDBC;
import java.sql.*;
public class DB
public static void main(String[] args)
//声明Connection对象
Connection con;
//驱动程序名
String driver = "com.mysql.jdbc.Driver";
//URL指向要访问的数据库名mydata
String url = "jdbc:mysql://localhost:3306/test";
//MySQL配置时的用户名
String user = "root";
//MySQL配置时的密码
String password = "rjh123";
//遍历查询结果集
try
//加载驱动程序
Class.forName(driver);
//1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url,user,password);
if(!con.isClosed())
System.out.println("Succeeded connecting to the Database!");
//2.创建statement类对象,用来执行SQL语句!!
Statement statement = con.createStatement();
//要执行的SQL语句
String sql = "select * from user ";
//3.ResultSet类,用来存放获取的结果集!!
ResultSet rs = statement.executeQuery(sql);
System.out.println("--------------------------------------");
System.out.println("执行结果如下所示:");
System.out.println("------------------------");
System.out.println("id" + "\\t" + "姓名" + "\\t" + "密码" + "\\t" + "住址"+ "\\t" +"手机号");
System.out.println("--------------------------------------");
String id= null;
String name = null;
String pw = null;
String address = null;
String phone=null;
while(rs.next())
//获取sno这列数据
id = rs.getString("id");
//获取sname这列数据
name = rs.getString("name");
//获取sex这列数据
pw = rs.getString("pw");
//获取age这列数据
address = rs.getString("address");
//获取phone这列数据
phone = rs.getString("phone");
//输出结果
System.out.println(id + "\\t" + name + "\\t" + pw + "\\t" + address+ "\\t" +phone);
rs.close();
con.close();
catch(ClassNotFoundException e)
//数据库驱动类异常处理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
catch(SQLException e)
//数据库连接失败异常处理
e.printStackTrace();
catch (Exception e)
// TODO: handle exception
e.printStackTrace();
finally
System.out.println("数据库数据成功获取!!");
运行结果
Succeeded connecting to the Database!
--------------------------------------
执行结果如下所示:
------------------------
id 姓名 密码 住址 手机号
--------------------------------------
1 章子怡 qwerty Beijing 13788658672
2 郭富城 abc123 HongKong 15678909898
3 林志颖 654321 Taiwan 18612124565
4 梁静茹 987654367 malaixiya 18912340998
5 LadyGaGa 123456 America 13012386565
数据库数据成功获取!!
2、了解jdbc
为了使java编写的程序不依赖于具体的数据库,java提供了专门用于操作数据的api,即jdbc,jdbc操作不同的数据库仅仅是连接方式上的差异而已,使用jdbc的应用程序一旦和数据库建立连接,就可以使用jdbc提供的api操作数据库。如下图
3、jdbc的编写流程
通常来说JDBC的操作一般分为以下几步:
1.导入需要操作的数据库jdbc驱动包和创建数据库
2.将jdbc包加载至JVM中
3.通过DriverManager类中getConnection方法获取到对应数据库连接对象
4.编写需要操作的sql语句
5.通过连接对象创建编译对象
6.接受并处理返回的结果
7.释放资源
4、使用JDBC方式技巧
- 使用PrearedStatement,可以通过预编译的方式避免在拼接SQL时造成SQL注入。
- 禁用自动提交
这个最佳实践在我们使用JDBC的批量提交的时候显得非常有用,将自动提交禁用后,你可以将一组数据库操作放在一个事务中,而自动提交模式每次执行SQL语句都将执行自己的事务,并且在执行结束提交。- 使用Batch Update:批量更新/删除,比单个更新/删除,能显著减少数据传输的往返次数,提高性能。
- 使用列名获取ResultSet中的数据,从而避免invalidColumIndexError
JDBC中的查询结果封装在ResultSet中,我们可以通过列名和列序号两种方式获取查询的数据,当我们传入的列序号不正确的时候,就会抛出invalidColumIndexException,例如你传入了0,就会出错,因为ResultSet中的列序号是从1开始的。另外,如果你更改了数据表中列的顺序,你也不必更改JDBC代码,保持了程序的健壮性。有一些Java程序员可能会说通过序号访问列要比列名访问快一些,确实是这样,但是为了程序的健壮性、可读性,我还是更推荐你使用列名来访问。- 使用变量绑定而不是字符串拼接
使用PreparedStatment可以防止注入,而使用?或者其他占位符也会提升性能,因为这样数据库就可以使用不同的参数执行相同的查询,提示性能,也防止SQL注入。- 关闭Connection 等资源,确保资源被释放;
- 选择合适的JDBC驱动,参考前文,选择第四种;
- 尽量使用标准的SQL语句,从而在某种程度上避免数据库对SQL支持的差异,不同的数据库厂商的数据库产品支持的SQL的语法会有一定的出入,为了方便移植,推荐使用标准的ANSI SQL标准写SQL语句。
- 使用正确的getXXX()方法
当从ResultSet中读取数据的时候,虽然JDBC允许你使用getString()和getObject()方法获取任何数据类型,推荐使用正确的getter方法,这样可以避免数据类型转换。
以上是关于JDBC连接数据库的主要内容,如果未能解决你的问题,请参考以下文章