Java -- JDBC学习笔记1、连接数据库添加数据

1、JDBC是什么?

Java语言连接数据库,是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。

2、JDBC的本质是什么?

JDBC是SUN公司制定的一套接口(interface),也就是说SUN公司只负责定义,而不负责实现。作为开发人员是面向接口而编程。只需调用SUN公司提供的接口即可,而无需关心接口具体实现。java.sql.* (这个软件包下有许多的接口)

3、为什么要面向接口编程?

  • 接口都有调用者和实现者,作为开发人员需要调用相应的接口,而如何实现则无需关心
  • 为什么要面向接口编程?解耦合:降低程序的耦合度,提高程序的扩展力。多态就是典型的:面向抽象编程,不面向具体编程。
  • 比如一个方法里的参数类型是接口类型,这样只需传入接口实现类即可,如果在方法参数写成类类型,那么就只能传入对应的类,不利于维护和修改。

4、为什么SUN制定一套JDBC接口?

  • 为Java软件工程师修一座桥连接不同的数据库
  • 上边已经说了,Java软件工程师只需调用SUN公司提供的接口即可,而接口的具体实现类正是由各大数据库厂商负责,因为每种数据库的实现原理不一样,Oracle数据库有自己的原理。MySQL数据库也有自己的原理。SqlServer数据库也有自己的原理。
  • 如果没有SUN公司提供的接口,我们就要学习各大数据库厂商的实现类代码,非常复杂和麻烦,每个数据库厂商的实现都不一样,而有了SUN公司提供的接口后就简单了,当SUN公司将接口定义好后,各大数据库厂商纷纷相应,分别对接口进行实现,而我们只需将他们写的接口实现类下载下来,引入到项目当中,然后调用SUN公司提供的接口即可。

5、JDBC开发前的准备工作——下载jar驱动包

  • jar包里边的内容就是各大数据库厂商对接口的具体实现类,我这里下载的是SQL server的驱动jar包。
  • 开发工具使用的是IDEA。
  • 数据库使用的是SQL server2012。

5.1、打开IDEA,新建一个Java Web项目

  • 在Java Web项目中的WEB-INF文件下新建一个lib文件夹,不要在根目录下或者其它文件夹建。
  • 将下载好的驱动jar复制到lib文件夹中。
  • 右键lib文件,选择Add as Library。

5.2、JDBC中主要的接口和类如下:

6、JDBC的具体开发步骤

6.1、注册驱动

告诉Java程序,即将要连接的是哪个”品牌“的数据库,SQL server的注册方式:

try
{
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch (ClassNotFoundException e)
{
      e.printStackTrace();
}
  • MySQL的加载驱动方式:Class.forName("com.mysql.jdbc.Driver")
  • 将lib文件夹里的SQLserver的jar包换成对应的MySQL驱动的jar包即可

6.2、连接数据库

表示JVM进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,用完之后一定要关闭通道,代码如下:

Connection conn = null;

        String url = "jdbc:sqlserver://localhost:1433;databaseName=StudentManage";

        try
        {
            conn = DriverManager.getConnection(url,"sa","sql2012");
        }
        catch (SQLException sqlException)
        {
            sqlException.printStackTrace();
        }
  • url:数据库连接字符串,就是告诉Java数据库在哪,连接那个库
  • sa:数据库登录名
  • sql2012:数据库登录密码
  • MYSQL对应的连接字符串:url=jdbc:mysql://localhost:3306/MyfirstDb?characterEncoding=utf-8&useSSL=false

6.3、获取发送SQL的对象

通过Connection对象获取Statement对象,专门执行sql语句的对象.

Statement statement = null;
        try
        {
            statement = conn.createStatement();
        }
        catch (SQLException sqlException)
        {
            sqlException.printStackTrace();
        }

6.4、执行SQL语句、处理结果

String addSql = "INSERT INTO Students(Name,LoginName,LoingPwd) values('小明','xm','123')";

        try
        {
            int resultCount = statement.executeUpdate(addSql);

            if (resultCount == 1)
            {
                System.out.println("add data success.....");
            }
        }
        catch (SQLException sqlException)
        {
            sqlException.printStackTrace();
        }

6.5、释放资源

try
        {
            statement.close();
            conn.close();
        }
        catch (SQLException sqlException)
        {
            sqlException.printStackTrace();
        }

遵循先开后关原则,释放所有使用到的资源对象。

原文地址:https://www.cnblogs.com/dcy521/p/14725031.html