栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

JDBC基础——01数据库与java连接

JDBC基础——01数据库与java连接

最近学校刚好讲到数据库DDL操作以及JDBC,东西有点多,所以做点笔记,方便以后查阅

注:本文仅为学习笔记,如有遗漏欢迎指正

1.JDBC简介

JDBC全称为Java Database Connectivity(Java数据库链接),通过它,我们可以连接不同的数据库,执行各种操作(如insert,delete,update,select等)

2.如何使用JDBC

 1,加载驱动程序
首先要将驱动程序jar包导入到项目中,导入方式为:
在对应项目下创建一个lab文件夹,然后将所需要的jar包放入lab文件夹中
像这样

 然后在idea中依次点击File➜Project Structure➜Libraries,然后在Libraries中点击“+”号,然后点击Java,在页面中选择你创建的lib文件夹并点击ok,然后点击应用即可,之后便可以在右侧状态栏中看到添加的jar包 
如图:

 

做完这一系列准备工作后,便可以开始驱动程序的加载,在这里我们要用到class类的静态方法 
for name(驱动程序类名),这个驱动程序类名实现了java中的java.sql.Driver接口,该静态方法还会抛出一个编译时异常,该异常必须处理,不然无法完成编译,解决方法为添加try catch块,并在catch块中打印一句话,驱动程序没有找到,代码如下

try {
            Class.forName("驱动程序包类名");
            System.out.println("驱动程序加载完毕");
        } catch (ClassNotFoundException e) {
            System.out.println("驱动程序添加失败");
            e.printStackTrace();
        }

 我这里连接的是sql server数据库,所以驱动程序包类名应该为     “com.microsoft.sqlserver.jdbc.SQLServerDriver”
上述这些的目的是将驱动程序加载到内存并且去DriverManager注册

2,建立连接connection 
     该连接connection可以理解为java程序和数据库之间的一条公路,所有通过java程序操作数据库的动作都要经过这条公路才行。我们建立连接,需要知道连接的ip(sql server为1433),数据库的名称,数据库的账号名和该账号名的密码,同时还要调用DriverManager.getConnection();要想往该方法内传参数,还需要定义一个url(字符串类型),该url内便包含了IP以及服务器名称。(url格式为:

"jdbc:数据库软件://localhost:端口号;databaseName=数据库名字";

)getConnection()方法也会报出一个编译时异常SQLException。该异常的处理方法也和之前那个异常的处理方法相同,添加一个try catch块即可,代码如下

  try {
                String url = "jdbc:sqlserver://localhost:1433;databaseName=pas";
                Connection con = DriverManager.getConnection(url,"sa","sa");

            } catch (SQLException e) {
                e.printStackTrace();
            }

注:sa是账号名和密码名,pas是数据库名字不用区分大小写。
如果连不上,需要去sql server配置管理器的SQL Server2005网络配置中的SQLEXPRESS协议中的TCP/IP中修改IP地址中的IPALL中的TCP端口为1433,以及SQL Native Client配置中的客户端协议中的TCP/IP的默认端口为1433,确定并重启数据库

3,创建Statement

关于Statement,可以理解为在公路connection上行驶的货车,运送关于操作数据库的信息

 Statement sta = con.createStatement();

4,执行SQL语句
Statement有两个方法
   1)excuteUpdate(String insert,update,delete,sql)返回值为int,为sql语句影响的行数
   2)ResultSect executeQuery(String selectSql)查询语句

具体使用方法为
 

 String sql = "insert into teacher(teanum, teaName, teatitle, teatypeid, teabtd, pwd, static) values ('20210001', '区区一只亚麻大', '老师', 1, '1982-5-7', 1, 1)";
            String sql2 = "delete from teacher where teaNum = '20210001'";
            int rows = sta.executeUpdate(sql2/sq1);
            if (rows == 1) {
                System.out.println("op successful");
            }else{
                System.out.println("op error");
            }

 

 5,关闭资源

   关闭资源的顺序刚好和创建的顺序相反,先关闭Statement,然后关闭connection

 

finally {
            try {
                if(sta != null) {
                    sta.close();
                    sta = null;
                }
                if (con != null) {
                    con.close();
                    con = null;
                }

            } catch (SQLException e) {
                e.printStackTrace();
            }
            System.out.println("关闭成功");

        }

 使用finally块的原因是因为关闭操作无论进行之前出了什么错误都要关闭,所以关闭操作是一定要执行的,所以使用finally块,try catch块是因为close()方法同样会抛出一个编译时异常,必须处理,用if是要确定连接和statement是否创建,如果没创建则不需要关闭他们,令sta和con最后等于null是为了让垃圾回收车尽快回收内存。

如果这样写,那么sta和con就写在了之前的try catch块外卖,所以应该将他们俩定义为全局变量,即:
 

  Connection con = null;
  Statement sta = null;

 这就没问题了

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/285960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号