首頁 資料庫 mysql教程 JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库

JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库

Jun 07, 2016 pm 03:47 PM
access java mysql 連接

. 概述 1.1 JDBC 概念 JDBC(Java Database Connectivity) 是 Java 语言为了支持 SQL 功能而提供的与数据库连接的用户的接口, JDBC 中包括了一组由( Java )语言书写的接口和类,它们都是独立于特定的 DBMS, 或者说他们可以和各种数据库相关联。 1.2 JDBC

. 概述

1.1 JDBC概念

     JDBC(Java Database Connectivity)Java语言为了支持SQL功能而提供的与数据库连接的用户的接口,JDBC中包括了一组由(Java)语言书写的接口和类,它们都是独立于特定的DBMS,或者说他们可以和各种数据库相关联。

 

1.2 JDBC用途

    JDBC由一组Java语言编写的类和接口组成,使用内嵌式的SQL,主要实现三方面功能:建立于数据库的链接,执行SQL声明以及处理SQL执行结果;JDBC支持基本的SQL功能,使用它可以方便地与不同的关系型数据库建立联系,进行相关操作,并无需再为不同的DBMS分别编写程序。

    JDBC出现之前,通过Java访问数据库唯一方法是利用Java输入输出流访问iruwuqi端的CGI程序,通过CGI程序访问和操作数据库并得到结果。每一次访问都会由Web服务器启动一个新的CGI进程与数据库建立连接,在这种方式下,访问效率和速度都很低,且容易引入错误。

1.3 JDBC结构和特点

简单的说,JDBC能完成下列三件事:

   与一个数据库建立连接;

   向数据库发送SQL语句;

   处理数据库返回的结果。

   JDBC包含两部分与数据库独立的API面向程序开发人员的JDBC API面向底层的JDBC Driver API

面向程序开发人员的JDBC API被描述成聚集抽象的Java接口,通过这些接口应用程序可以对某个数据库打开连接,执行SQL语句并且处理结构。最重要的接口有如下几种:

java.sql.DriverManager: 处理驱动的调入并且对产生新的数据库连接提供支持

java.sql.Connection:     代表队特定数据库的连接

java.sql.Statement:       代表一个特定的容器,来对一个特定的数据库执行SQL语句

java.sql.ResultSet:        控制对一个特定语句进行数据的存取

其中java.sql.Statement又有两个子类:java.sql.PreparedStatement用于执行预编译的SQL语句和java.sql.CallableStatement用于执行对一个数据库内嵌过程的调用。

       面向底层的JDBCDriver API主要是针对数据库厂商开发数据库底层驱动程序使用的,一般情况下用于开发应用程序的程序员用不到这些类库。Java的应用程序员通过SQL包中的定义的一系列抽象类对数据库进行操作,而实现这些抽象类并完成实际操作的是数据库驱动器Driver运行的。

      

1.4 JDBC与其他的API

      处理JDBC之外,到目前为止,微软的ODBC可能是用的最为广泛的访问关系数据库的API,甚至比JDBC的应用更加广泛,它提供了连接几乎任何一种平台、任何一种数据库的能力。当然也可以在java中直接使用ODBC,JDBC的协助下,用JDBC-ODBC桥接器实现。但是为什么要用JDBC呢?

      ODBC并不适合在Java中直接使用。完全精确地实现从C代码ODBCJava API编写的JDBC的翻译也并不令人满意。ODBC并容易学习,它将简单和复杂特性混杂,。JDBC这样的Java API 对于纯Java方案来说是必须的。

II. JavaAccess数据库(Access2007)

2.1 加载驱动

引入相应的类和包,使用JDBC的源程序都需要输入java.sql包,必要的时候还需要载入JDBC-ODBC驱动包:

import sun.jdbc.odbc.JdbcOdbcDriver必要的话引入javax.sql

2.2 加载数据源

这里所谓的数据源就是用Access建立的数据库文件。假设该源名为IProducts.mdb。按照以下步骤:

(注意:如果你的操作系统是64位的,而Eclipse是32位的,此时你也应该用32位的ODBC,方法是:运行 C:\Windows\SysWOW64\odbcad32.exe 。 因为控制面板中打开的ODBC数据管理器默认是64位的。 否则会报错:[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配。)

控制面板——管理工具——数据源(ODBC) (如图2.1

JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库


2.1 

打开ODBC Data Source Administrator对话框——选择系统DSN(不选用户DSN,因为系统DSN可以避免调试时候出现权限问题),然后添加,在弹出的页面选择Microsoft Access Driver(装了2007,可以选*.mdb, *.accdb)(如图2.2

JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库

2.2

完成”——“选择

JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库

在右边选择要添加的数据库文件,数据源名里填写“IProducts”(这个随意填写,不过要记住后面要用到的)

2.3 代码实现

CODE:
public booleanlinkByUsingAccess() {
        Statement stat = null;
        Connection con = null;
        ResultSet rs = null;
        try {
            // 加载JDBC驱动
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            // 创建数据库连接
            con =DriverManager.getConnection("jdbc:odbc:IProducts","","");
       // 没有设置密码,所以用户名和密码留空
           String sql = "select * from devil_lang_map";
            stat =con.createStatement();
            rs =stat.executeQuery(sql);
            int i = 97;
            while(rs.next()) {
               String value = rs.getString("human");
               treeMap.put(((char) i++) + "", value);
            }
        } catch (Exception e) {
           e.printStackTrace();
            returnfalse;
        } finally {
            try {
               if (rs != null) {
                   rs.close();
               }
               if (stat != null) {
                   stat.close();
               }
               if (con != null) {
                   con.close();
               }
            } catch(Exception e2) {
               e2.printStackTrace();
               return false;
            }
        }
        return true;
    }
登入後複製


2.4 注意

2.4.1在装载驱动时(执行Class.forName()),驱动将自动向JDBC注册自己。需要注意的是,使用Class.forName()方法可能抛出一个ClassNotFoundException异常,所以在驱动程序类有可能不存在时,会抛出这个异常。

2.4.2打开连接于数据库建立连接的标准方法是调用DriverManager.getConnection。该方法接收含有某个URL的字符串。DriverManager类(即所谓的JDBC管理层)将尝试找到可与那个URL所代表的数据库进行连接的驱动程序。DriverManager类存有已注册的Driver类的清单。当调用方法getConnection时,它将检查清单中的每个驱动程序,知道找到可与URL中指定的数据库进行连接的驱动程序为止,Driver ManagergetConnection方法使用这个URL来建立市级的链接。

2.4.3 JDBC URL的标准语法由三部分组成,各部分间用冒号分隔,例如jdbc:子协议>:子名称>

jdbc——协议。JDBC URL中的协议总是JDBC子协议>——驱动程序名或数据库连接机制(可以一个或多个驱动程序支持)。子协议名的典型事例是odbc,该名称是为用于指定ODBC风格的数据资源名称的URL专门保留的。例如,为了通过JDBC-ODBC桥来访问某个数据库。子名称>——一种标识数据库的方法。

III. JavaSQL Server数据库(SQL Server2008)

(注:为方便起见,下面的Sql Server一律以SS代替)

3.1 连接代码与语句分析

3.1.1重要语句功能简述

Class.forName(“xxx”);

JDBC中已经有多个驱动,此句话是遍历系统中已经注册的驱动程序,直到找到一个正确的驱动程序。

Connection con = DriverManager.getConnection(url);

如果无法获得连接,程序将会抛出一个异常,所以如果程序已经执行到这里,说明已经连接成功。

3.1.2代码

CODE:
public voidtestSQLServer() {
        Connection con = null;
        Statement stat = null;
        ResultSet rs = null;
        try {
           Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
           //DriverManager.setLogStream(System.out);
            String url ="jdbc:sqlserver://localhost:1492;databasename=javaDB";
            String user= "JavaDB";
            Stringpassword = "8316051";
            con =DriverManager.getConnection(url, user, password);
            stat =con.createStatement();
            String sql ="select * from currentdb";
            rs =stat.executeQuery(sql);
            while(rs.next()){
               System.out.println("DB_Name: " + rs.getString("NAME"));
               System.out.println("DB_Corporation: " +rs.getString("CORPORATION"));
            }
        } catch (Exception e) {
           e.printStackTrace();
        } finally {
            try {
               if (rs != null) {
                   rs.close();
               }
               if (stat != null) {
                   stat.close();
               }
               if (con != null) {
                   con.close();
               }
            } catch(Exception e1) {
               e1.printStackTrace();
            }
        }
}
登入後複製


3.2 Sql Server 2008错误解决与MyEclipse连接SS异常解决

3.2.1驱动引导问题

首先,从官网上下载驱动:http://www.microsoft.com/downloadS/details.aspx?familyid=99B21B65-E98F-4A61-B811-19912601FDC9&displaylang=zh-cn

此驱动同时支持SS2000 SS2005 SS2008

加载方法在工程上右键——Properties——Java Build Path——Libraries——Add ExternalJARs..然后选择jar包即可。

驱动中有两个jarsqljdbc.jarsqljdbc4.jar

分别加载后如图3.13.2

3.1

3.2

然而加载sqljdbc.jar后连接数据库提示如下异常:(图3.3

3.3

后来移除了sqljdbc.jar(移除方法同加载方法,只是选择不同而已),加载sqljdbc4.jar,连接SS数据库只需要将包引入,而不需显示地将包import。(如图3.4

3.4

3.2.2 MyEclipse异常

提示信息:com.microsoft.sqlserver.jdbc.SQLServerException:通过端口 1368连接到主机localhostTCP/IP连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server的实例正在主机上运行,且在此端口接受 TCP/IP连接,还要确保防火墙没有阻止到此端口的 TCP连接。确保使用了正确的JDBC驱动程序(注意版本)解决方案:

检查驱动连接语句“con = DriverManager.getConnection(url, user, password);“一句中的端口号是否与Sql Server Configuration Manager中的TCP/IP里面设置的TCP端口一致;在cmd中输入”telnet localhost port”来检查某个端口是否已经开启,如果提示无法开启端口,则证明该端口由于某种原因无法开启。禁用TCP/IP服务,然后重启;重启Sql Server服务(Express版本显示为SqlServer(Express))。

提示信息:com.microsoft.sqlserver.jdbc.SQLServerException:用户 'JavaDB'登录失败。

分析:程序能够运行到此,证明数据库加载正确。

解决方法:

用户名或密码错误;数据库中不存在此用户。

 

3.2.3 SS数据库错误:

提示信息:已成功与服务器建立连接,但是在登录过程中发生错误。   (provider:  共享内存提供程序,   error:   0   -  管道的另一端上无任何进程。

解决方法:

选中服务器(右键)->属性->安全性->服务器身份验证修改为"SQL SERVERWINDOWS身份验证模式";展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用;重启Sql Server服务即可。(注:必须重启才能见效);重启Microsoft SQL Server ManagementStudio(不是必须的)。

问题描述:在登录时无法打开默认数据库

解决方法:

此问题与上一个问题有所关联。是没有设置用户映射数据库。用另外一个可用的用户登录,然后选择安全性”——“登录名”——“用户映射,选择一个数据库。

问题描述:使用新建的账户登录之后发现数据库中只有系统数据库,刷新提示无法为该请求检索数据

解决方法:使用具有sysadmin权限的账户登录,然后在安全性”——“登录名中右键点新用户的用户名,在弹出的登录属性对话框中选择服务器角色,选择“sysadmin”。此时刷新新用户,就会看到其他的数据库。如果要设置新用户的owner,则在登录属性对话框中选择用户映射,选中要设置的数据库,选中下面的“db_owner”即可。

3.2.4创建一个新账户

在一个具有sysadmin权限的账户中点击安全性”——“登录名右键点击,然后在用户名一栏输入用户名,选择Windows认证或者Sql Server认证,然后输入密码(Windows认证不需要),取消密码过期一项,在最底下选择数据库和语言,然后确认。

 

IV. JavaOracle数据库

4.1 加载驱动

该驱动所在位置是:

Oracle安装目录——Ora92——lib——ojdbc14.jar

注:如果不加载驱动,则异常为:java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver

4.2 连接代码

CODE:
publicOracle() {
        Connection con = null;
        Statement stat = null;
        ResultSet rs = null;
        try {
           Class.forName("oracle.jdbc.driver.OracleDriver");
            String url ="jdbc:oracle:thin:@localhost:1521:Jason";
            String user= "scott";
            Stringpassword = "tiger";
            con =DriverManager.getConnection(url, user, password);
            stat =con.createStatement();
            String sql ="select * from emp";
            rs =stat.executeQuery(sql);
            while(rs.next()){
               System.out.println(rs.getString(1));
            }
        } catch (Exception e) {
           e.printStackTrace();
        } finally {
            try {
               if (rs != null) {
                   rs.close();
               }
               if (stat != null) {
                   stat.close();
               }
               if (con != null) {
                   con.close();
               }
            } catch(Exception e2) {
               e2.printStackTrace();
            }
        }
}
 
登入後複製


 

V. JavaMy SQL

5.1 加载驱动

加载驱动:mysql-connector-java-5.1.5-bin.jar

5.2 代码

CODE;
publictestMySql() {
        Connection con = null;
        Statement stat = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url ="jdbc:mysql://localhost:3306/datang";
            String user= "root";
            Stringpassword = "admin";
            con =DriverManager.getConnection(url, user, password);
            stat = con.createStatement();
            String sql ="select * from t_admin";
            rs =stat.executeQuery(sql);
            while(rs.next()) {
               System.out.println(rs.getString(1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
               if (rs != null) {
                   rs.close();
               }
               if (stat != null) {
                   stat.close();
               }
               if (con != null) {
                   con.close();
               }
            } catch(Exception e2) {
               e2.printStackTrace();
            }
        }
}
登入後複製


 


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
給MySQL表添加和刪除字段的操作步驟 給MySQL表添加和刪除字段的操作步驟 Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

怎樣卸載MySQL並清理殘留文件 怎樣卸載MySQL並清理殘留文件 Apr 29, 2025 pm 04:03 PM

要安全、徹底地卸載MySQL並清理所有殘留文件,需遵循以下步驟:1.停止MySQL服務;2.卸載MySQL軟件包;3.清理配置文件和數據目錄;4.驗證卸載是否徹底。

如何使用MySQL的函數進行數據處理和計算 如何使用MySQL的函數進行數據處理和計算 Apr 29, 2025 pm 04:21 PM

MySQL函數可用於數據處理和計算。 1.基本用法包括字符串處理、日期計算和數學運算。 2.高級用法涉及結合多個函數實現複雜操作。 3.性能優化需避免在WHERE子句中使用函數,並使用GROUPBY和臨時表。

MySQL批量插入數據的高效方法 MySQL批量插入數據的高效方法 Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显著提升数据库操作效率。

MySQL在macOS系統的安裝步驟詳解 MySQL在macOS系統的安裝步驟詳解 Apr 29, 2025 pm 03:36 PM

在macOS上安裝MySQL可以通過以下步驟實現:1.安裝Homebrew,使用命令/bin/bash-c"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"。 2.更新Homebrew,使用brewupdate。 3.安裝MySQL,使用brewinstallmysql。 4.啟動MySQL服務,使用brewservicesstartmysql。安裝後,可通過mysql-u

如何分析MySQL查詢的執行計劃 如何分析MySQL查詢的執行計劃 Apr 29, 2025 pm 04:12 PM

使用EXPLAIN命令可以分析MySQL查詢的執行計劃。 1.EXPLAIN命令顯示查詢的執行計劃,幫助找出性能瓶頸。 2.執行計劃包括id、select_type、table、type、possible_keys、key、key_len、ref、rows和Extra等字段。 3.根據執行計劃,可以通過添加索引、避免全表掃描、優化JOIN操作和使用覆蓋索引來優化查詢。

與其他關係數據庫相比,使用MySQL的優點是什麼? 與其他關係數據庫相比,使用MySQL的優點是什麼? May 01, 2025 am 12:18 AM

MySQL被廣泛應用於各種項目中的原因包括:1.高性能與可擴展性,支持多種存儲引擎;2.易於使用和維護,配置簡單且工具豐富;3.豐富的生態系統,吸引大量社區和第三方工具支持;4.跨平台支持,適用於多種操作系統。

MySQL的字符集和排序規則如何配置 MySQL的字符集和排序規則如何配置 Apr 29, 2025 pm 04:06 PM

在MySQL中配置字符集和排序規則的方法包括:1.設置服務器級別的字符集和排序規則:SETNAMES'utf8';SETCHARACTERSETutf8;SETCOLLATION_CONNECTION='utf8_general_ci';2.創建使用特定字符集和排序規則的數據庫:CREATEDATABASEexample_dbCHARACTERSETutf8COLLATEutf8_general_ci;3.創建表時指定字符集和排序規則:CREATETABLEexample_table(idINT

See all articles