Java 实现连接sql server 2000
程序员文章站
2023-12-01 15:45:10
第一种:通过odbc连接数据库 java语言的跨平台的工作能力(write once ,run anywhere)、优秀的图像处理能力(我相信现在没有那种语言可以超过jav...
第一种:通过odbc连接数据库
java语言的跨平台的工作能力(write once ,run anywhere)、优秀的图像处理能力(我相信现在没有那种语言可以超过java在网络上的图形处理能力)、网络通信功能、通过jdbc数据库访问技术等等,让我们谁都不可否认java语言是sun公司对于计算机界的一个巨大的贡献。笔者可以描述这样一个场景:有一天你上网完全可以不用ie 或者netscape,上网就像是玩游戏,你可以获得游戏那么精美的图像和互动的感觉,如果你玩过uo,也许你就知道那种感觉了,但是java做成的东西一定会超过uo的,因为不单单是游戏,也不是单单是浏览器,如果你愿意(要你有钱,有时间,有优秀的java人才)你可以把所有的这一切用java完全集成出来!!!我不是夸大java的功能,大家可以访问一下http://www.simchina.net的那个社区程序,你就能找到一种感觉了:相信我没有说什么假话 。好了,不说废话了,现在我向你介绍java的数据库访问技术----jdbc数据库访问技术(你可千万不要搞成odbc了!)。
jdbc技术事实上是一种能通过java语言访问任何结构化数据库的应用程序接口(api)(sun这样说的,我也不知道是不是真的),而且现在的jdbc 3.0据sun说也能访问execel等电子表格程序!
jdbc对于数据库的访问有四种方式,我们这里只是介绍两种:
第一种是通过odbc做为“桥”(bridge)对数据库访问,第二种是直接对数据库访问。
我们先来看看第一种jdbc<-->odbc访问的流程:
jdbc driver mannager->jdbc<->odbc桥->odbc->数据库客户机驱动库->数据库服务器->返回查询结果,在这种访问中值的我们注意的是虽然java是"write once ,run anywhere",但是如果通过这种访问的话,需要客户端必须设置odbc和有相应的数据库客户机的驱动,当你看了下面的另外一个流程的时候或许你会想:明明下一种更方面,为什么还要有这个东西的产生!呵呵,因为,未必所有的数据库服务器提供商都提供下面的jdbc驱动程序(给jdbc访问提供相应的接口),所以就有了jdbc<->odbc bridge。
接着再让我们来看看第二种访问流程:
jdbc driver mannager->局部jdbc驱动->客户端数据库->数据库服务器->返回查询结果,这种访问事实上是转换jdbc调用为相应的数据库(oracle, sybase, informix, db2, 和其他的数据库数据库管理系统)的客户端api调用(这么说,不知道大家能不能懂,说简单点就好像asp不是通过dsn对数据库访问而是通过oledb访问,说道这里我还是不知道大家能不能明白我的意思。哎呀,不要扔鸡蛋嘛!),这种方式的访问需要相应的数据库提供商提供相应的jdbc驱动程序,但是有一种好处,可以独立于odbc用于可以随处可run的客户端的浏览器中的applet程序。
我们下面将给大家一个通过jdbc-odbc桥数据库访问的实例,但是在看下面的事例前我想问大家一次:jdk1.3装了吗?数据库驱动装了吗(我使用的是sqlserver)?你该没有使用linux吧?虽然java支持linux,但是老兄我可没有使用linux哟(这同java的write once ,run anywhere没有关系),由于使用了运行于win下面的odbc,我建议你看看这篇东西http://www.aspcn.com/showarticle.asp?id=112,否则你要是有了问题,出不了结果那岂不是要怪我(不过欲加之罪,何患无吃... ...),冤枉呀!
哎呀,说了这么多的废话,还是让我们来看看到底jdbc的调用吧!既然我们是通过odbc访问数据库,所以这个odbc是跑不了的,我们先来设置你的odbc:打开你的odbc数据源->选择系统dsn(click加新的dsn-)->接下来输入选择数据库类型、输入dsn名:、选择服务器、连接数据库的方式、输入数据库的登陆用户和密码->测试连接,如果测试成功的话,那么你的dsn就建立好了,我的dsn名为sqlserver.使用的是sqlserver7.0,以 “sa”登陆,密码为空。这些东西都是后面要用道的!
好了下面让我们来看程序代码: (该代码已经通过运行)
//###########################################################
//代码开始
import java.sql.*;
//加载java数据连接包,java基本所有的数据库的调用的都在这个东西里面
public class insertcoffees {
public static void main(string args[]) {
string url = "jdbc:odbc:sqlserver";
//取得连接的url名,注意sqlserver是dsn名
connection con;
//实例化一个connection对象
statement stmt;
string query = "select * from col_link";
//选择所有的col_link表中的数据输出
try {
class.forname("sun.jdbc.odbc.jdbcodbcdriver");
//加载jdbc-odbc桥驱动
} catch(java.lang.classnotfoundexception e) {
system.err.print("classnotfoundexception: ");
//加载jdbc-odbc桥错误
system.err.println(e.getmessage());
//其他错误
}
try {
con = drivermanager.getconnection(url, "sa", "");
//数据库连接
stmt = con.createstatement();
//create 一个声明
stmt.executeupdate("create table col_link (sitename varchar (20) null ,siteurl varchar (50) null) ");
//执行了一个sql语句生成了一个表col_link的表
stmt.executeupdate("insert into col_link values('asp中华网','http://www.aspcn.com')");
stmt.executeupdate("insert into col_link values('永远到底有多远','http://xuankong.com')");
//执行一个insert into语句
stmt.executeupdate("update col_link set siteurl='http://www.aspcn.com/xuankong/xuankongt.jpg' where siteurl='http://xuankong.com'");
//执行一个update语句,更新数据库
resultset rs = stmt.executequery(query);
//返回一个结果集
system.out.println("col_link表中的数据如下(原始数据)");
//下面的语句使用了一个while循环打印出了col_link表中的所有的数据
system.out.println("站点名 "+" "+"站点地址");
system.out.println("---------------"+" "+"----------------");
while (rs.next()) {
string s = rs.getstring("sitename");
string f = rs.getstring("siteurl");
//取得数据库中的数据
system.out.println(s + " " + f);
/*string t = rs.getstring(1);
string l = rs.getstring(2);
system.out.println(t + " " + l);*/
/*jdbc提供了两种方法识别字段,一种是使用getxxx(注意这里的getxxx表示取不同类型字段的不同的方法)获得字段名,
第二种*是通过字段索引,在这里我把第二种方法注释了*/
/*你可以访问这个连接获得getxxx的用法:http://java.sun.com/docs/books/tutorial/jdbc/basics/_retrievingtable.html*/
}
stmt.close();
con.close();
//上面的语句关闭声明和连接
} catch(sqlexception ex) {
system.err.println("sqlexception: " + ex.getmessage());
//显示数据库连接错误或者查询错误
}
}
}
//代码结束
java语言的跨平台的工作能力(write once ,run anywhere)、优秀的图像处理能力(我相信现在没有那种语言可以超过java在网络上的图形处理能力)、网络通信功能、通过jdbc数据库访问技术等等,让我们谁都不可否认java语言是sun公司对于计算机界的一个巨大的贡献。笔者可以描述这样一个场景:有一天你上网完全可以不用ie 或者netscape,上网就像是玩游戏,你可以获得游戏那么精美的图像和互动的感觉,如果你玩过uo,也许你就知道那种感觉了,但是java做成的东西一定会超过uo的,因为不单单是游戏,也不是单单是浏览器,如果你愿意(要你有钱,有时间,有优秀的java人才)你可以把所有的这一切用java完全集成出来!!!我不是夸大java的功能,大家可以访问一下http://www.simchina.net的那个社区程序,你就能找到一种感觉了:相信我没有说什么假话 。好了,不说废话了,现在我向你介绍java的数据库访问技术----jdbc数据库访问技术(你可千万不要搞成odbc了!)。
jdbc技术事实上是一种能通过java语言访问任何结构化数据库的应用程序接口(api)(sun这样说的,我也不知道是不是真的),而且现在的jdbc 3.0据sun说也能访问execel等电子表格程序!
jdbc对于数据库的访问有四种方式,我们这里只是介绍两种:
第一种是通过odbc做为“桥”(bridge)对数据库访问,第二种是直接对数据库访问。
我们先来看看第一种jdbc<-->odbc访问的流程:
jdbc driver mannager->jdbc<->odbc桥->odbc->数据库客户机驱动库->数据库服务器->返回查询结果,在这种访问中值的我们注意的是虽然java是"write once ,run anywhere",但是如果通过这种访问的话,需要客户端必须设置odbc和有相应的数据库客户机的驱动,当你看了下面的另外一个流程的时候或许你会想:明明下一种更方面,为什么还要有这个东西的产生!呵呵,因为,未必所有的数据库服务器提供商都提供下面的jdbc驱动程序(给jdbc访问提供相应的接口),所以就有了jdbc<->odbc bridge。
接着再让我们来看看第二种访问流程:
jdbc driver mannager->局部jdbc驱动->客户端数据库->数据库服务器->返回查询结果,这种访问事实上是转换jdbc调用为相应的数据库(oracle, sybase, informix, db2, 和其他的数据库数据库管理系统)的客户端api调用(这么说,不知道大家能不能懂,说简单点就好像asp不是通过dsn对数据库访问而是通过oledb访问,说道这里我还是不知道大家能不能明白我的意思。哎呀,不要扔鸡蛋嘛!),这种方式的访问需要相应的数据库提供商提供相应的jdbc驱动程序,但是有一种好处,可以独立于odbc用于可以随处可run的客户端的浏览器中的applet程序。
我们下面将给大家一个通过jdbc-odbc桥数据库访问的实例,但是在看下面的事例前我想问大家一次:jdk1.3装了吗?数据库驱动装了吗(我使用的是sqlserver)?你该没有使用linux吧?虽然java支持linux,但是老兄我可没有使用linux哟(这同java的write once ,run anywhere没有关系),由于使用了运行于win下面的odbc,我建议你看看这篇东西http://www.aspcn.com/showarticle.asp?id=112,否则你要是有了问题,出不了结果那岂不是要怪我(不过欲加之罪,何患无吃... ...),冤枉呀!
哎呀,说了这么多的废话,还是让我们来看看到底jdbc的调用吧!既然我们是通过odbc访问数据库,所以这个odbc是跑不了的,我们先来设置你的odbc:打开你的odbc数据源->选择系统dsn(click加新的dsn-)->接下来输入选择数据库类型、输入dsn名:、选择服务器、连接数据库的方式、输入数据库的登陆用户和密码->测试连接,如果测试成功的话,那么你的dsn就建立好了,我的dsn名为sqlserver.使用的是sqlserver7.0,以 “sa”登陆,密码为空。这些东西都是后面要用道的!
好了下面让我们来看程序代码: (该代码已经通过运行)
//###########################################################
//代码开始
import java.sql.*;
//加载java数据连接包,java基本所有的数据库的调用的都在这个东西里面
public class insertcoffees {
public static void main(string args[]) {
string url = "jdbc:odbc:sqlserver";
//取得连接的url名,注意sqlserver是dsn名
connection con;
//实例化一个connection对象
statement stmt;
string query = "select * from col_link";
//选择所有的col_link表中的数据输出
try {
class.forname("sun.jdbc.odbc.jdbcodbcdriver");
//加载jdbc-odbc桥驱动
} catch(java.lang.classnotfoundexception e) {
system.err.print("classnotfoundexception: ");
//加载jdbc-odbc桥错误
system.err.println(e.getmessage());
//其他错误
}
try {
con = drivermanager.getconnection(url, "sa", "");
//数据库连接
stmt = con.createstatement();
//create 一个声明
stmt.executeupdate("create table col_link (sitename varchar (20) null ,siteurl varchar (50) null) ");
//执行了一个sql语句生成了一个表col_link的表
stmt.executeupdate("insert into col_link values('asp中华网','http://www.aspcn.com')");
stmt.executeupdate("insert into col_link values('永远到底有多远','http://xuankong.com')");
//执行一个insert into语句
stmt.executeupdate("update col_link set siteurl='http://www.aspcn.com/xuankong/xuankongt.jpg' where siteurl='http://xuankong.com'");
//执行一个update语句,更新数据库
resultset rs = stmt.executequery(query);
//返回一个结果集
system.out.println("col_link表中的数据如下(原始数据)");
//下面的语句使用了一个while循环打印出了col_link表中的所有的数据
system.out.println("站点名 "+" "+"站点地址");
system.out.println("---------------"+" "+"----------------");
while (rs.next()) {
string s = rs.getstring("sitename");
string f = rs.getstring("siteurl");
//取得数据库中的数据
system.out.println(s + " " + f);
/*string t = rs.getstring(1);
string l = rs.getstring(2);
system.out.println(t + " " + l);*/
/*jdbc提供了两种方法识别字段,一种是使用getxxx(注意这里的getxxx表示取不同类型字段的不同的方法)获得字段名,
第二种*是通过字段索引,在这里我把第二种方法注释了*/
/*你可以访问这个连接获得getxxx的用法:http://java.sun.com/docs/books/tutorial/jdbc/basics/_retrievingtable.html*/
}
stmt.close();
con.close();
//上面的语句关闭声明和连接
} catch(sqlexception ex) {
system.err.println("sqlexception: " + ex.getmessage());
//显示数据库连接错误或者查询错误
}
}
}
//代码结束
上一篇: SqlServer 序号列的实现方法
推荐阅读
-
java执行SQL语句实现查询的通用方法详解
-
JSP连接SQL Server 2000系统配置
-
Tomcat5+Mssql server 2000数据库连接池配置之旅
-
ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排序函数)
-
SQL Server中通过扩展存储过程实现数据库的远程备份与恢复
-
sql server中通过查询分析器实现数据库的备份与恢复方法分享
-
C#连接SQL Server的实现方法
-
java 获取数据库连接的实现代码
-
C#实现连接SQL Server2012数据库并执行SQL语句的方法
-
SQL Server 2000 清理日志精品图文教程