JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库
. 概述 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代码ODBC到Java API编写的JDBC的翻译也并不令人满意。ODBC并容易学习,它将简单和复杂特性混杂,。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:WindowsSysWOW64odbcad32.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)
图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","",""); // 没有设置密码,所以用户名和密码留空 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。
加载方法在工程上右键——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:通过端口 1368连接到主机localhost的TCP/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 SERVER和WINDOWS身份验证模式";展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用;重启Sql Server服务即可。(注:必须重启才能见效);重启Microsoft SQL Server ManagementStudio(不是必须的)。
问题描述:在登录时无法打开默认数据库
解决方法:
此问题与上一个问题有所关联。是没有设置“用户映射”数据库。用另外一个可用的用户登录,然后选择“安全性”——“登录名”——“用户映射”,选择一个数据库。
问题描述:使用新建的账户登录之后发现数据库中只有系统数据库,刷新提示“无法为该请求检索数据”
解决方法:使用具有sysadmin权限的账户登录,然后在“安全性”——“登录名”中右键点新用户的用户名,在弹出的“登录属性”对话框中选择“服务器角色”,选择“sysadmin”。此时刷新新用户,就会看到其他的数据库。如果要设置新用户的owner,则在“登录属性”对话框中选择“用户映射”,选中要设置的数据库,选中下面的“db_owner”即可。
3.2.4创建一个新账户
在一个具有sysadmin权限的账户中点击“安全性”——“登录名“右键点击,然后在用户名一栏输入用户名,选择Windows认证或者Sql Server认证,然后输入密码(Windows认证不需要),取消密码过期一项,在最底下选择数据库和语言,然后确认。
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(); } } }

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MySQL 数据库中,用户和数据库的关系通过权限和表定义。用户拥有用户名和密码,用于访问数据库。权限通过 GRANT 命令授予,而表由 CREATE TABLE 命令创建。要建立用户和数据库之间的关系,需创建数据库、创建用户,然后授予权限。

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

数据集成简化:AmazonRDSMySQL与Redshift的零ETL集成高效的数据集成是数据驱动型组织的核心。传统的ETL(提取、转换、加载)流程复杂且耗时,尤其是在将数据库(例如AmazonRDSMySQL)与数据仓库(例如Redshift)集成时。然而,AWS提供的零ETL集成方案彻底改变了这一现状,为从RDSMySQL到Redshift的数据迁移提供了简化、近乎实时的解决方案。本文将深入探讨RDSMySQL零ETL与Redshift集成,阐述其工作原理以及为数据工程师和开发者带来的优势。

要填写 MySQL 用户名和密码,请:1. 确定用户名和密码;2. 连接到数据库;3. 使用用户名和密码执行查询和命令。

1.使用正确的索引索引通过减少扫描的数据量来加速数据检索select*fromemployeeswherelast_name='smith';如果多次查询表的某一列,则为该列创建索引如果您或您的应用根据条件需要来自多个列的数据,则创建复合索引2.避免选择*仅选择那些需要的列,如果您选择所有不需要的列,这只会消耗更多的服务器内存并导致服务器在高负载或频率时间下变慢例如,您的表包含诸如created_at和updated_at以及时间戳之类的列,然后避免选择*,因为它们在正常情况下不需要低效查询se

Navicat本身不存储数据库密码,只能找回加密后的密码。解决办法:1. 检查密码管理器;2. 检查Navicat的“记住密码”功能;3. 重置数据库密码;4. 联系数据库管理员。

SQL IF 语句用于有条件地执行 SQL 语句,语法为: IF (condition) THEN {语句} ELSE {语句} END IF;。条件可以是任何有效的 SQL 表达式,如果条件为真,执行 THEN 子句;如果条件为假,执行 ELSE 子句。IF 语句可以嵌套,允许更复杂的条件检查。

使用 Navicat Premium 创建数据库:连接到数据库服务器并输入连接参数。右键单击服务器并选择“创建数据库”。输入新数据库的名称和指定字符集和排序规则。连接到新数据库并在“对象浏览器”中创建表。右键单击表并选择“插入数据”来插入数据。
