JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库
. 概要
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程序訪问和操作数据库并得到结果。每一次訪问都会由Webserver启动一个新的CGI进程与数据库建立连接,在这样的方式下,訪问效率和速度都非常低。且easy引入错误。
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代码ODBC到Java
API编写的JDBC的翻译也并不令人惬意。
ODBC并easy学习。它将简单和复杂特性混杂,。
JDBC这种Java
API 对于纯Java方案来说是必须的。
II. Java与Access数据库(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)
图2.1
打开ODBC Data Source Administrator对话框——选择系统DSN(不选用户DSN。由于系统DSN能够避免调试时候出现权限问题),然后“加入”。在弹出的页面选择Microsoft
Access Driver(装了2007,能够选*.mdb, *.accdb)(如图2.2)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmVsb2k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="middle" alt="">
图2.2
“完毕”——“选择”
在右边选择要加入的数据库文件,“数据源名”里填写“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","","");
// 没有设置password,所以username和password留空
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
Manager的getConnection方法使用这个URL来建立市级的链接。
2.4.3 JDBC URL的标准语法由三部分组成,各部分间用冒号分隔。比如jdbc:<子协议>:<子名称>
jdbc——协议。JDBC URL中的协议总是JDBC。<子协议>——驱动程序名或数据库连接机制(能够一个或多个驱动程序支持)。子协议名的典型事例是odbc,该名称是为用于指定ODBC风格的数据资源名称的URL专门保留的。比如,为了通过JDBC-ODBC桥来訪问某个数据库。<子名称>——一种标识数据库的方法。
III. Java与SQL 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。
载入方法在project上右键——Properties——Java Build Path——Libraries——Add ExternalJARs..然后选择jar包就可以。
驱动中有两个jar包sqljdbc.jar和sqljdbc4.jar。
分别载入后如图3.1和3.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:通过port 1368连接到主机localhost的TCP/IP连接失败。错误:“Connection
refused: connect。请验证连接属性。并检查 SQL Server的实例正在主机上执行,且在此port接受 TCP/IP连接,还要确保防火墙没有阻止到此port的
TCP连接。确保使用了正确的JDBC驱动程序(注意版本号)解决方式:
检查驱动连接语句“con = DriverManager.getConnection(url, user, password);“一句中的port号是否与Sql Server Configuration
Manager中的TCP/IP里面设置的TCPport一致。在cmd中输入”telnet
localhost port”来检查某个port是否已经开启。假设提示无法开启port。则证明该port因为某种原因无法开启。
禁用TCP/IP服务,然后重新启动。重新启动Sql Server服务(Express版本号显示为SqlServer(Express))。
提示信息:com.microsoft.sqlserver.jdbc.SQLServerException:用户 'JavaDB'登录失败。
分析:程序可以执行到此,证明数据库载入正确。
解决方法:
username或password错误;数据库中不存在此用户。
3.2.3 SS数据库错误:
提示信息:已成功与server建立连接。可是在登录过程中错误发生。 (provider: 共享内存提供程序, error: 0 - 管道的还有一端上无不论什么进程。
)
解决方法:
选中server(右键)->属性->安全性->server身份验证改动为"SQL
SERVER和WINDOWS身份验证模式";展开server上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆改动为启用;重新启动Sql
Server服务就可以。(注:必须重新启动才干见效)。重新启动Microsoft SQL Server ManagementStudio(不是必须的)。
问题描写叙述:在登录时无法打开默认数据库
解决方法:
此问题与上一个问题有所关联。是没有设置“用户映射”数据库。
用另外一个可用的用户登录。然后选择“安全性”——“登录名”——“用户映射”,选择一个数据库。
问题描写叙述:使用新建的账户登录之后发现数据库中仅仅有系统数据库。刷新提示“无法为该请求检索数据”
解决方法:使用具有sysadmin权限的账户登录,然后在“安全性”——“登录名”中右键点新用户的username,在弹出的“登录属性”对话框中选择“server角色”,选择“sysadmin”。此时刷新新用户。就会看到其它的数据库。
假设要设置新用户的owner。则在“登录属性”对话框中选择“用户映射”。选中要设置的数据库,选中以下的“db_owner”就可以。
3.2.4创建一个新账户
在一个具有sysadmin权限的账户中点击“安全性”——“登录名“右键点击。然后在username一栏输入username,选择Windows认证或者Sql
Server认证,然后输入password(Windows认证不须要),取消password过期一项,在最底下选择数据库和语言,然后确认。
IV. Java与Oracle数据库
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. Java与My 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();
}
}
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库的更多相关文章
- Java连接Access数据库的那些坑
Java 使用 JDBC 连接Access数据库 需要掌握的技能 1.Java SE基本技术 2.懂点JDBC技术 能够学到如何使用Java正确的连接JDBC 环境 window8.1 64位 jdk ...
- loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试
调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ...
- Java 连接Access
Java 连接Access 第一次使用连接Access数据库, 记录一下遇到的坑 Access驱动下载地址 http://pan.baidu.com/s/1o8ltTfc 不使用WINDOW的建立数据 ...
- 连接Linux服务器操作Oracle数据库
连接Linux服务器操作Oracle数据库 由于项目已经上线,现场的数据库服务器不允许直接用Oracle的客户端plsqldev.exe来连接,只能通过Linux服务器的命令来操作. 以下是用Se ...
- windows下plsql连接linux下的oracle数据库
windows下plsql连接linux下的oracle数据库 经过多方查找,终于找到解决办法,特此记录下来,共享之. PL/SQL Develorper:目前未发现可以在Linux系统中安装的版本. ...
- Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
Jsp 环境目前最流行的是 Tomcat5.0.Tomcat5.0 自己包含一个 Web 服务器,如果是测试,就没必要把 Tomcat 与 IIS 或 Apache 集成起来.在 Tomcat 自带的 ...
- JDBC连接各种数据库的方法,连接MySql,Oracle数据库
JDBC连接各种数据库的方法: JDBC编程步骤: 1.导入jar包 2.注册驱动 3.获取数据库连接对象 4.定义SQL语句 5.获得执行SQL语句对象statemnet 6.执行SQL语句 7.处 ...
- Hibernate 连接MySQL/SQLServer/Oracle数据库的hibernate.cfg.xml文件
用Hibernate配置连接数据库可以方便我们对POJO的操作,节省了很多时间和代码.下面就分别说明连接不同数据库需要在hibernate.cfg.xml做的配置. 需要数据库驱动包可以点击这里下载: ...
- Java连接本地MySQL数据库进行增删改查操作
package Dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStat ...
随机推荐
- VS2010不能编译SQLServer2005的Microsoft.SQLServer.ManagedDTS.dll的解决方法
VS2010不能编译SQLServer2005的Microsoft.SQLServer.ManagedDTS.dll是最近碰到的一个疑难杂症问题,通过查询微软社区和一些英文资料找到了解决方法,同事说之 ...
- WinForm 国际化开发一例
1.新建一个WinForm程序(在中文版的Windows下),如下,添加1个Button和1个Label 设置Form1的localizable属性为True(Form1的properties里的De ...
- Android 导入第三方jar时 出现ClassNotFoundException
处理方式: 1.首先检查有没有正确的导入该jar和有没有重复导入该jar. 2.如果没有出现1的问题,那么在buildpath->order and export 中将你导入的jar左边的复选框 ...
- java通讯录
)设一个通信录由以下几项数据信息构成: 数据项 类型 姓名 字符串 地址 字符串 邮政编码 ...
- xml它解析----DOM解析
DOM模型(documentobject model) •DOM解析器在解析XML文档时,会把文档中的全部元素,依照其出现的层次关系.解析成一个个Node对象(节点). •在dom中.节点之间关系例如 ...
- Apple Watch 1.0 开发介绍 2.1 WatchKit Apps UI要点
实现app的开始是定义storyboard场景.每个场景定义了app的一部分界面.可以为不同的尺寸自定义场景. 组装storyboard界面 WatchKit app和iOS app的布局模式不同.组 ...
- 同步(Synchronization)
多线程应用程序的存在,在运行打开一个潜在的多线程安全的接入资源. 两个线程相同的资源可能会以意想不到的方式改变相互干扰. 例如.一个线程可以覆盖有一个线程改变或使应用程序进入一个潜在的无效的状态未知. ...
- ti8168 eth0 启动
ti8168 原始文件系统进去后没有网络eth0接口,为了有该接口须要配置/etc/network/interfaces 文件 详细配置例如以下(红色要配置) # /etc/network/inter ...
- mysql出现Data truncated for column
1.首先叙述,描述你自己的问题. 假设你想把同意为空值的勾去掉.. .恰巧数据库中的数据 processed_f 为空没有值. . . .这时候你对数据表结构做更改的时候就会出现Data trunca ...
- Raw-OS互斥的源代码分析的量的Mutex
作为分析的内核版本2014-04-15,基于1.05正式版.blogs我们会跟上的内核开发进度的最新版本,如果出现源代码的目光"???"的话,没有深究的部分是理解. Raw-OS官 ...