欢迎光临
我们一直在努力

Java 实现连接sql server 2000(JDBC数据库访问例子)-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

刘金龙 04041222 ljlsunny@vip.sina.com

 

第一种:通过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()); //显示数据库连接错误或者查询错误 } } } //########################################################### //代码结束 //###########################################################   在上面这个程序中我想你展示了如何使用jdbc-odbc连接数据库,使用sql语句生成一个表,使用select、insert 、update语句取的、插入和更新一个表中的数据,如何通过字段名和字段索引访问数据库中的东东!我希望你能从上面的代码真正的学习到一些东西!   发挥你的想象力,设想一下java到底,比如说可以通过数据库做一个不需要gui(图形用户界面)的聊天室,呵呵,感觉起来就像在dos环境下打字的聊天室!哈哈!   最后需要说的是笔者的调试上面程序的环境:win2000 , jdk1.3,ms sqlserver编辑软件:editplus 2.01a(这最后的东西可不是废话,虽然早就了一些专业的java开发工具,但是笔者建议java初学者使用文本软件开发java程序)

 

 

第二种:直接用jdbc访问数据库

(1) 该实例已经运行通过

jsp连接sql server7.0/2000数据库   testsqlserver.jsp如下:   <%@ page contenttype="text/html;charset=gb2312"%>   <%@ page import="java.sql.*"%>   <html>   <body>   <%class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver").newinstance();   string url="jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs";   //pubs为你的数据库的   string user="sa";   string password="";     connection conn= drivermanager.getconnection(url,user,password);   statement stmt=conn.createstatement(resultset.type_scroll_sensitive,resultset.concur_updatable);   string sql="select * from test";   resultset rs=stmt.executequery(sql);   while(rs.next()) {%>   您的第一个字段内容为:<%=rs.getstring(1);%>   您的第二个字段内容为:<%=rs.getstring(2);%>   <%}%>   <%out.print("数据库操作成功,恭喜你");%>   <%rs.close();   stmt.close();   conn.close();     %>   </body>   </html>

 

(2)java访问sqlserver服务器

第一步:安装jdbc

点击sql server for jdbc驱动程序安装程序setup.exe(可以到微软网站下载 http://msdn.microsoft.com/library/default.asp?rul=/downloads/list/sqlserver.asp下载)

第二步:设置系统变量classpath

假设sql server for jdbc 驱动程序安装在d:\jdbc\,则classpath应该设置如下:

classpath:=.;…;d:\jdbc\lib; d:\jdbc\lib\mssqlserver.jar; d:\jdbc\lib\msutil.jar; d:\jdbc\lib\msbase.jar;

注意:设置时要在最前面的点号和分号

第三步:编辑java程序并且运行

实例1如下:

//import com.microsoft.*;

//注意:在java与sql server 连接时不需要这个包,其他书上说这个包是必需的,这个问题有待进一步讨论

import java.sql.*;

import java.net.url;

class insert

{

       public static void main(string[] args)

       {

        string url="jdbc:microsoft:sqlserver://localhost:1433;databasename=northwind";

 

              string query="select * from categories";

              string query1="insert categories values(10,hanbao,sweet)";

              string query2="insert categories values(11,naicha,coffee taste)";

              try

              {

                 class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver");

                 connection con=drivermanager.getconnection(url,"sa","739555");

                 statement stmt=con.createstatement();

                 stmt.executeupdate(query1);

                 stmt.executeupdate(query2);

 

                 stmt.close();

                 con.close();

 

              }

              catch(sqlexception ex)

              {

 

              }

              catch(java.lang.exception ex)

              {

                 ex.printstacktrace();

              }

       }

}

 

实例2如下:

//import com.microsoft.*;

//注意:在java与sql server 连接时不需要这个包,其他书上说这个包是必需的,这个问题有待进一步讨论

import java.sql.*;

import java.net.url;

class java2sqlserver

{

       public static void main(string[] args)

       {

              string url="jdbc:microsoft:sqlserver://localhost:1433;user=sa;password=739555;databasename=northwind";

              string query="select * from categories";

              try

              {

                     class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver");

                     //drivermanager.setlogstream(system.out);

                     connection con=drivermanager.getconnection(url);

                     checkforwarning(con.getwarnings());

                     statement stmt=con.createstatement();

                     resultset rs=stmt.executequery(query);

                     dispresultset(rs);

                     rs.close();

                     stmt.close();

                     con.close();

              }

              catch(sqlexception ex)

              {

            system.out.println(ex.tostring()+"—-sqlexception caught—-");

                     while(ex!=null)

                     {

                            system.out.print("sqlstate:"+ex.getsqlstate());

                            system.out.print("message:"+ex.getmessage());

                            system.out.print("vendor:"+ex.geterrorcode());

                ex=ex.getnextexception();

                            system.out.println("");

                     }

              }

              catch(java.lang.exception ex)

              {

                     ex.printstacktrace();

              }

}

             

              private static boolean checkforwarning(sqlwarning warn)

              {

                     boolean rc=false;

                     if(warn!=null)

                     {

                            system.out.println("—-warning—-");

                            rc=true;

                            while(warn!=null)

                            {

                            system.out.print("sqlstate:"+warn.getsqlstate());

                            system.out.print("message:"+warn.getmessage());

                            system.out.print("vendor:"+warn.geterrorcode());

                            system.out.println("");

                            warn=warn.getnextwarning();

 

                            }

                     }

                     return rc;

              }

 

              private static void dispresultset(resultset rs) throws sqlexception

              {

            int i;

                     resultsetmetadata rsmd=rs.getmetadata();

                     int numcols=rsmd.getcolumncount();

                     for(i=1;i<=numcols;i++)

                     {

                            if(i>1) system.out.print(",    ");

                            system.out.print(rsmd.getcolumnlabel(i));

 

                     }

                     system.out.println("");

                     boolean more=rs.next();

                     while(more)

                     {

                            for(i=1;i<numcols;i++)

                            {

                                   if(i<1) system.out.print(",    ");

                                   system.out.println(rs.getstring(i));

                            }

                            system.out.println("");

                            more=rs.next();

                     }

              }

              //system.out.println("hello world!");

       }

 

以上两个实例笔者已经通过运行!

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Java 实现连接sql server 2000(JDBC数据库访问例子)-JSP教程,Java技巧及代码
分享到: 更多 (0)