存档
Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。
一、连接各种数据库方式速查表
下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。
1、Oracle8/8i/9i数据库(thin模式)
Java代码
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
2、DB2数据库
Java代码
Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
演示在用java连接SQL Server数据库。用了一个简单的java程序作试验。
第一步:获得jdbc for SQL Server驱动程序
sqljdbc.jar 和 sqljdbc4.jar sqljdbc_auth.dll
为了支持向后兼容以及可能的升级方案,JDBC Driver 2.0 在每个安装包中都包括 2 个 JAR 类库:sqljdbc.jar 和 sqljdbc4.jar。
JAR | 说明 |
---|---|
sqljdbc.jar |
sqljdbc.jar 类库提供对 JDBC 3.0 的支持。 sqljdbc.jar 类库要求使用 5.0 版的 Java 运行时环境 (JRE)。连接到数据库时,在 JRE 6.0 上使用 sqljdbc.jar 会引发异常。 注意: JDBC Driver 2.0 不支持 JRE 1.4。使用 JDBC Driver 2.0 时必须将 JRE 1.4 升级至 JRE 5.0 或更高版本。在某些情况下,您可能需要重新编译应用程序,因为它可能与 JDK 5.0 或更高版本不兼容。有关详细信息,请参阅 Sun Microsystems 网站上的文档。
|
sqljdbc4.jar |
sqljdbc4.jar 类库提供对 JDBC 4.0 的支持。它不仅包括 sqljdbc.jar 的所有功能,还包括新增的 JDBC 4.0 方法。 sqljdbc4.jar 类库要求使用 6.0 或更高版本的 Java 运行时环境 (JRE)。在 JRE 1.4 或 5.0 上使用 sqljdbc4.jar 会引发异常。 注意: 如果应用程序必须在 JRE 6.0 上运行,即使该应用程序不使用 JDBC 4.0 功能,也应使用 sqljdbc4.jar。
|
请注意,尽管驱动程序旨在与所有主要的 Sun 等效 Java 虚拟机一起工作并由这些虚拟机支持,但却是在 Sun JRE 5.0 或更高版本上进行测试的。
注意:JRE6的要选择sqljdbc4.jar
第二步:设置环境变量CLASSPATH
将下载下来的sqljdbc.jar或sqljdbc4.jar放到目录d:\shared\lib下。将环境变量CLASSPATH设置为:D:\shared\lib\sqljdbc.jar
set CLASSPATH=.;d:\shared\lib\sqljdbc.jar;
(注意:第一个“.”,这个代表当前目录。)
第三步:编写一段简单的java程序。
下面的这段程序使用驱动sqljdbc.jar连接SQL Server 2005数据库,并提取master数据库中的用户表的ID和name两列信息。
SQL Server 2005服务器在本机,端口为1433。登录sa的密码为:secret
执行:select id,name,crdate from dbo.sysobjects where type='U' 这条语句返回当前数据库(这可在url中指定!)中的用户表的id和name列。
演示在用java连接Sybase ASE数据库。用了一个简单的java程序作试验。
第一步:获得jdbc for sybase驱动程序
下载JDBC驱动:http://www.sybase.com/detail?id=1009726
也可到CSDN下载:http://download.csdn.net/source/2697077
有jConnect6.05和jConnect5.5两种。jConnect6.05中包含jconn3.jar包,jConnect5.5中包含jconn2.jar包。建议最新的Sybase驱动jconn3.jar。不过我的这个例子很简单,两者都可以用。
下载:jconn3.jar ,下载:jconn2.jar
第二步:设置环境变量CLASSPATH
将下载下来的jconn2.jar或jconn3.jar放到目录D:\sybase\Shared\lib下。将环境变量CLASSPATH设置为:D:\sybase\Shared\lib\jconn2.jar
set CLASSPATH=.;d:\sybase\shared\lib\jconn2.jar; (注意:第一个“.”,这个代表当前目录。)
第三步:编写一段简单的java程序。
下面的这段程序用jconn2.jar连接Sybase ASE15.0.3数据库并提取master数据库中的用户表的ID和name两列信息。
Sybase ASE数据库的ip地址为:192.168.0.168,端口:5000。登录sa的密码为:sybase
执行:select id,name,crdate from dbo.sysobjects where type='U' 这条语句返回当前数据库(这在url中指定!)中的用户表的id和name列。
JAVA版hello world全攻略
侯光敏
看到很多技术网站的BBS上面充斥着java初学者的关于运行第一个java程序的求助信息,我觉得作为“过来人“很有写这篇文章的必要,因为他们遇到的都是些很低级的问题,但是让这些问题占据bbs上那么多宝贵的空间就太不应该了。
要搞清楚的基本概念
java是一种跨平台的网络语言,为了能够在不同平台上运行,它使用了虚拟机这个概念。后缀名为java的文件是源代码文件,它经过编译后生成的是 class文件。虚拟机执行的就是这些class文件,将它们转化成为不同平台能够运行的命令。这就是为什么java的效率比较低的原因。也是因为这个原 因,在java里没有其它语言的使用者熟悉的exe文件的概念。
执行hello world的方法
切记:在命令行中输入 javac 源文件名.java (编译)
java 源文件名 (执行,没有后缀)
这里说的是java application,里面包括main函数。
如果hello world是applet版的,在命令行中输入appletviewer 源文件名 (已经编译后的class文件)
如果class文件已经嵌入了html网页中,直接用IE打开就行了。
application经常出现的错误
系统提示Exception in thread "main" java.lang.NoClassDefFoundError。出现这个提示的原因可能有:
1 你把文件名拼错了,java对大小写是敏感的。打错了当然找不到文件。
2 虚拟机没有找到必须的类库。你可能没有在autoexec.bat文件中设置classpath。进入windows的运行,输入sysedit,然后在 autoexec.bat文件中加入这么一行:set classpath=你的jdk的安装目录\lib; 例如set classpath=c:\jdk1.3.0_02\lib; 保存退出后,你要在dos窗口的c根目录下执行一遍autoexec.bat文件已保证被设置了,当然,如果你愿意也可以重启机器。
系统提示HelloWorld.java:1: Public class helloworld must be defined in a file called
以下存储过程能够统计sqlserver数据库内所有用户表所占用的空间,并按照占用空间大小倒序排列。
--------------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetAllTableSizes
AS
DECLARE @TableName VARCHAR(100)
DECLARE tableCursor CURSOR FORWARD_ONLY
FOR
select [name] from dbo.sysobjects
where OBJECTPROPERTY(id, N'IsUserTable') = 1
FOR READ ONLY
CREATE TABLE #TempTable
(
tableName varchar(100),
numberofRows varchar(100),
reservedSize varchar(50),
dataSize varchar(50),
indexSize varchar(50),
unusedSize varchar(50)
以下存储过程能够自动批量删除数据库库内的所有用户表。
可以修改存储过程内的条件来删除指定的表。
删除表时请谨慎!
CREATE PROCEDURE sp_drop_tbl
AS
BEGIN
DECLARE @tblname varchar(80)
DECLARE @dropsql varchar(100)
DECLARE cur1 CURSOR FOR
SELECT name FROM dbo.sysobjects WHERE type = 'U'
OPEN cur1
FETCH cur1 INTO @tblname
WHILE (@@SQLSTATUS = 0)
BEGIN
SELECT @dropsql = "DROP TABLE " + @tblname
EXEC (@dropsql)
FETCH cur1 INTO @tblname
END
CLOSE cur1
DEALLOCATE cursor cur1
END
Sybase ASE15.0及以后的版本中的bcp命令实用工具中有个-Y参数,这个参数的作用是:禁用在服务器中的字符集转化,在使用bcp in时由bcp在客户端上执行字符集转化过程。
只有ASE15.0或更高版本中支持客户端unicode转化。
另外:所有字符集转化都是在bcp out期间在服务器中执行的。
提供一个能够自动生成Sybase数据库内所有表的表结构、索引语法的存储过程。
存储过程名字:sp_gettabledll 下载
过程语法如下:
----------------------------------------------------------------------------------------------------------------------
if exists(select 1 from sysobjects where name = 'sp_gettabledll' and type = 'P')
drop procedure sp_gettabledll
go
create procedure sp_gettabledll
@tblname varchar(30) = null,
@prechar varchar(4) = null, --$:no print
@table_dll varchar(16384) = null out,
@dbname varchar(32) = null,
@droptg char(1) = '1',
@prxytx varchar(255) = null,
@replace varchar(20) = null,
@tabtype varchar(1) = 'A', --A:所有表;P:代理表;U:用户表
@indextg varchar(3) = 'TPI', --T:纯表;P:主键;I:纯索引;J:除主键外的纯索引(和TP使用与I相同,和I同时使用I失效)
@table_seg varchar(32) = null,
@index_seg varchar(32) = null
as
begin
set nocount on