栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-06

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-06

JDBC学习

当简单学完sql脚本的编写,对数据库有简单的认识之后,就学习JDBC对JAVA和数据库的连接。

首先Java 连接数据库的两种方式有JDBC直连(纯连:需要jar包)和JDBC-ODBC桥连两种方式。

ODBC是微软制定的编程语言连接数据库的语言规范。

JDBC(JAVA Database Connectivity):是SUN公司制定的一套用Java连接数据库执行sql语句的规范标准。
这套标准提供了几个重要的接口Connection,Statement,ResultSet,Diver
而规范实现者提供驱动程序jar包实现这些接口。

那为什么还需要 JDBC?
参考:
 因为ODBC 不适合直接在 Java 中使用,因为它使用 C 语言接口。
 从Java 调用本地 C代码在安全性、实现、坚固性和程序的自动移植性方面都有许多缺点。
 从 ODBC C API 到 Java API 的字面翻译是不可取的。
 例如,Java 没有指针,而 ODBC 却对指针用得很广泛(包括很容易出错的指针"void *")。
————————————————
版权声明:本文为CSDN博主「追着蜗牛打」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:[](https://blog.csdn.net/u010191243/article/details/46685951)
实现JDBC操作—项目部分

首先实现Java对数据库的连接就需要先去对应数据库官网上去下载驱动程序jar包,通常我们将其命名为lib文件放在项目文件中。


但是这时ide(idea)还没有导入这个jar包,所以我们需要在项目中打开library导入jar包。

并导入模块

建立项目,通常我们对一张表进行crud所以我们将一个表的四个操作放到一类中,起名为 表名DAO(Data Access Object)。
DAO是一种设计模式(持久化层设计思想),将所有的DAO放入一个包。


如果要对方法进行测试,创建表名DAOTest 的测试类放入另一个包创建方法调用对象进行测试。

## 实现JDBC操作—代码部分(第一代)
1.加载驱动程序

调用Class.forname("包名 + 类名 ")方法(静态方法的调用方式:类名.方法名)在这里插入代码片
a.调用时这个方法会抛出一个编译时异常,ClassNotFoundException。(用try/catch解决后)
b.调用Driver接口,去包名里面截取.

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
2.得到连接

创建Connection 对象,调用DrivermanagerDriverManager.getConnection(url,“sa”,“sa”)返回对象

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

统一资源定位符:url = “jdbc:db类型://ip:port;databaseName=数据库名称”
localhost1433需要在配置管理器中调配

3.创建statement对象
Statement sta = con.createStatement();
4.执行sql
String sql = "insert into student (stunum, clsid, stuname, stubtd, pwd, static, sex)
 values (212117111217, 47, '小王', '2001-1-1', 1, 1, 1)";
int rows = sta.executeUpdate(sql);

sta的executeUpdate(sql)方法返回值是一个sql语句影响的行数
可以用来做判断。

if(rows == 1){
                System.out.println("operate success");
            }else{
                System.out.println("operate error");
            }
5.关闭资源

在sql执行完毕之后,con和sta对象就没用了,建议垃圾回收车回收,释放资源。

con.close();
con = null;
sta.close();
sta = null;
而关闭资源总要执行,所以在最后的finally块中编写。如果放在try块中写使sta = null;在后续程序进行中易报空指针异常。
但是他们在try块里为局部变量,所以这里需要将他们声明为方法的全局变量,创建在try块中,释放在finall块里。
但是如果try中出现异常还没来得及创建,finally块中就会报空指针异常,所以我们在finally块中还需要做一层判断。
finally {
            try {
                if(con != null){
                    con.close();
                    con = null;
                }
                if(sta != null){
                    sta.close();
                    sta = null;
                }
                
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
6.再在Test里面调用就可以了

注意:这里只能增添数据或者删除数据一次,下次增添或者删除需要在sql换个数据。

public class StudentDAOTest {
    public static void main(String[] args) {
        StudentDAO stu = new StudentDAO();
        stu.save();
//        stu.delete();
//        stu.update();
    }
}

所有代码结构

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class StudentDAO {
    public void save(){
        Connection con = null;
        Statement sta = null;
        try {
            String url ="jdbc:sqlserver://localhost:1433;databaseName=PAS";
            String sql = "insert into student (stunum, clsid, stuname, stubtd, pwd, static, sex) values (212117111217, 47, '小王同志', '2001-1-1', 1, 1, 1)";
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            con = DriverManager.getConnection(url,"sa","sa");
            sta = con.createStatement();
            int rows = sta.executeUpdate(sql);
            if (rows == 1){
                System.out.println("insert success");
            }else{
                System.out.println("insert errors");
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if (con != null){
                    con.close();
                    con = null;
                }

                if (sta != null){
                    sta.close();
                    sta = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
import com.lulu.DAO.LessonDAO;
import com.lulu.DAO.StudentDAO;


public class StudentDAOTest {
    public static void main(String[] args) {
        StudentDAO stu = new StudentDAO();
         stu.save();
//	       stu.delete();
//         stu.update();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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