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连接数据库的主要内容,如果未能解决你的问题,请参考以下文章

JDBC01 利用JDBC连接数据库不使用数据库连接池

jdbc连接数据库的代码问题jdbc连接mysql数据库

JDBC连接数据库

JDBC连接数据库

jdbc连接数据库步骤有哪些

在jdbc中,负责建立与指定数据库连接的方法是