Java连接数据库基本方法:JDBC 详解

Java的数据库编程(JDBC)技术

JDBC是什么?
为什么要选择使用JDBC?
JDBC怎么用呢?

JDBC(Java DataBase Connectivity,Java数据库连接技术)是Java访问数据库资源的标准,JDBC提供了一组通用的API,允许我们写出SQL语句,然后交给数据库。
JDBC的功能:
1)创建与数据库的连接;
2)发送SQL语句到任何关系型数据库中;
3)处理数据并查询结果。
为什么要选择使用JDBC?
在讨论这个问题之前,你需要了解一下微软开发的ODBC(Open DataBase Connectivity,开放数据连接),它与JDBC具有同样的功能,它提供一组通用的API,通过数据库特定的驱动程序来访问数据库。微软的ODBC是用C编写的,但其只适用于Windows平台,无法实现跨平台的操作数据库。如果没有JDBC或者ODBC,开发人员必须使用不同的一组API来访问不同的数据库,而利用JDBC或者ODBC,则只需要使用一组API,再加上数据库厂商提供的数据库驱动程序就可以了。所以,利用JDBC,我们就可以把同一个企业级Java应用移植到另一个数据库应用上。但是…JDBC并不符合面向对象的要求,JDBC要求你明确的处理数据字段,并且将它们映射到关系数据库的表中。开发人员将被迫与两种区别非常大的数据模型、语言和数据访问手段打交道:Java,以及SQL中的关系数据模型。
JDBC的结构
JDBC主要包含两部分:面向Java程序员的JDBC API及面向数据库厂商的JDBC Drive API。

1)面向Java程序员的JDBC API:

Java程序员通过调用此API从而实现连接数据库、执行SQL语句并返回结果集等编程数据库的能力,它主要是由一系列的接口定义所构成。
java.sql.DriverManager : 管理JDBC程序的;
java.sql.Connection : java程序与数据库之间建立连接,相当于一个通道;
java.sql.Statement : 用于执行SQL语句,并返回结果;
java.sql.ResultSet : 存储数据库查询的结果。

2)面向数据库厂商的JDBC Drive API:

现在的数据库厂商除了提供API接口之外,有一些厂商还提供了DBMS端的缓冲。
数据库厂商必须提供相应的驱动程序并实现JDBC API所要求的基本接口(每个数据库系统厂商必须提供对DriveManager、Connection、Statement、ResultSet等接口的具体实现),从而最终保证Java程序员通过JDBC实现对不同的数据库操作。

重点来了!!!!!
重点来了!!!!!
重点来了!!!!!
在Java程序中要操作数据库,一般应该通过如下几步(利用JDBC访问数据库的编程步骤),我们通过代码来进行讲解,代码如下:
/*引用必要的包
import java.sql.*;
它包含有操作数据库的各个类与接口  
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/*
连接数据库
 */
public class Conn {
    public static void main(String[] args) {
        Connection con;
        //jdbc驱动
        String driver = "com.mysql.cj.jdbc.Driver";
        /*
        my_sentiment_analysis是数据库的名字
        serverTimezone:覆盖时区的检测/映射。当服务器的时区为映射到Java时区时使用,
        					我在一开始没设置这个,就报错了
        useUnicode=true:useuUnicode是否使用Unicode字符集,默认值为false,
        				如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true
        characterEncoding:当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk
		*/
        String url = "jdbc:mysql://localhost:3306/my_sentiment_analysis?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8";
        String user = "root";
        String password = "root";
        try{
            // 1)加载连接数据库的驱动程序
            /*
        	采用Class.forName()方法显式地加载一个驱动程序类,由驱动程序负责向DriverManager
        	登记注册并在与数据库相连接时,DriverManager将使用此驱动程序
			*/
            Class.forName(driver);
            // 2)建立与数据源的连接
            con = DriverManager.getConnection(url, user, password);
            if (!con.isClosed()){
                System.out.println("数据库连接成功");

            }
            // 3)查询数据库:创建Statement对象并执行SQL语句以返回一个ResultSet对象。
            Statement stmt = con.createStatement();
            String sql;
            sql = "select app_name,pos_num from comment_level_analysis";
            ResultSet ret = stmt.executeQuery(sql);
            // 4)获得当前记录集中的某一记录的各个字段的值
            while(ret.next()){
                String name = ret.getString("app_name");
                int num = ret.getInt("pos_num");
                System.out.println("软件名称:" + name);
                System.out.println("积极数量:" + num);
            }
            // 5)关闭查询语句及与数据库的连接
            con.close();
        } catch (ClassNotFoundException e){
            System.out.println("数据库驱动没有安装");
        } catch (SQLException e){
            e.printStackTrace();
            System.out.println("数据库连接失败");
        }

    }
}

除此,再做一个拓展:

几种常见的数据库连接的URL写法

JDBC的URL=协议名+子协议名+数据源名。

a .协议名总是“jdbc”。
b .子协议名由JDBC驱动程序的编写者决定。
c .数据源名也可能包含用户与口令等信息;这些信息也可单独提供。

几种常见的数据库连接

1、Oracle

驱动:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@machine_name:port:dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1521

2、Mysql

驱动:com.mysql.jdbc.Driver
URL:jdbc:mysql://machine_name:port/dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认3306

3、SQL Server

驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:jdbc:microsoft:sqlserver://<machine_name><:port>;DatabaseName=
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1433

4、DB2

驱动:com.ibm.db2.jdbc.app.DB2Driver
URL:jdbc:db2://<machine_name><:port>/dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是5000

Mysql入门教程,希望对你们有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值