Jbuilder2006连接SQL2000数据库
一、下载SQLSERVER2000的jdbc驱动程序。
在微软站点就有这个驱动程序:
Window操作系统
http://www.uncj.com/upload/files/ms_jdbc_setup.exe
http://download.microsoft.com/download/3/0/f/30ff65d3-a84b-4b8a-a570-27366b2271d8/setup.exe
Unix操作系统 Mssqlserver.tar
http://download.microsoft.com/download/3/0/f/30ff65d3-a84b-4b8a-a570-27366b2271d8/mssqlserver.tar
二、安装JDBC
执行ms_jdbc_setup.exe可执行文件,一切只需要点击下一步,至到出现finish按钮,完成安装。
注:
(1) ms_JDBC_setup默认安装路径为:c:\Program Files\Microsoft SQL Server 2000 Driver for JDBC
(2)此版(Version 2.2.0022)本仅支持Microsoft SQL Server 2000 Driver for JDBC
(3)安装目录\lib\下的三个jar文件即是我们要的JDBC驱动核心
msbase.jar
mssqlserver.jar
msutil.jar
三、将以上(3)中指的三个jar文件加入到环境变量中去
classpath:
d:\webserver\lib\msbase.jar;d:\webserver\lib\mssqlserver.jar;d:\webserver\lib\msutil.jar
注:也可以省事的将以上三个文件拷贝至你的jvm机所在的JAVA_HOME\jre\lib\ext目录下,不过不建议这么做。
四、测试
jsp文件:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=haiguan";
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 xt_user";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%
}
%>
<%out.print("数据库操作成功,恭喜你");%>
<%
rs.close();
stmt.close();
conn.close();
%>
五、注意事项
1. 要保证你的Sql服务是启动状态
2. 在Sql 的管理器中能够使用sa或其它用户正常登录;(有些人在安装sql时用了nt用户管理模式,这里可能会有一定问题)
3. 第一次配置好环境变量最好能重启一下电脑
4. 注意JVM和DataBase的启动顺序:先启动DataBase,再启动JVM机。
注:在停止Web服务器后,再重启动,中间最好能有10秒以上的间隔。
5. 注意操作系统的网络连通性
A.启动了Tcp/IP服务
B.配置了相关IP地址,有些人机器可能用的是自动分配IP或有配置IP时,但网络不通可能也找不到IP
6. 有些机器在调试明最好能将(四)中的连接地址localhost改成数据库服务器的IP,这也是要注意5的原因
首先,配制环境,其中包括下载JDBC FRO Microsft SQL_Server2000的驱动程序(在微软官方网站下的,是sp3版的,这里就不写具体地址了,网上挺多的,但注意版本,我下的是sp3)。下载后发现是EXE 文件,双击安装。默认安装目录:C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC,其中C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib目录下的三个扩展名为.jar是我们要的驱动。然后配制环境变量:
在classpath这个环境变量里加入以下语句:
C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;
如果你的机子上正确配制了JDK的环境变量就应该有CLASSPATH这个环境变量,若没有就新建一个。
其实配环境变量的目的就是让系统能找到驱动程序,如果不配,执行下面一段代码时会产生无法找到驱动的异常,导致程序无法执行。
做完上述事情后,我用UltraEdit这个软件先写了连接数据库的代码来试验,代码如下:
/* try to connct SQL_Server database*/
import java.sql.*;
public class Sql_db_test{
Connection con;
Statement sta;
ResultSet rs;
String sql_driver;
String sql_url;
String user;
String pwd;
public Sql_db_test(){
sql_driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//驱动
sql_url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=manage";//语句一,其中manage是要访问的数据库名
user="xiaolin";//你要访问的数据库用户名
pwd="123456";//访问数据库的密 码
init();
}
public void init()
{
try{
Class.forName(sql_driver);//加载驱动
System.out.println("driver is ok");
con=DriverManager.getConnection(sql_url,user,pwd);
System.out.println("connection is ok");
sta=con.createStatement();
rs=sta.executeQuery("select * from 制衣表");//executeQuery
while(rs.next())
System.out.println(rs.getString("款式"));
}catch (Exception e)
{
e.printStackTrace();//printStackTrace();
}
}
public static void main(String[] args)
{
new Sql_db_test();
}
}
将上边的代码保存后,在命令提示行里执行
Javac Sql_db_test.java //编译正常通过
Java Sql_db_test //产生异常,异常如下
driver is ok
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establis
hing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source
)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Sou
rce)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown S
ource)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:523)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at DbTest.init(DbTest.java:32)
at DbTest.(DbTest.java:25)
at DbTest.main(DbTest.java:46)
Press any key to continue...
出现上边错误的主要原因是默认的数据库服务器端口 1433没有打开,无法直接连接 。
这时你在命令提示行中输入命令:netstat –an 来查看有没有tcp:0.0.0.0:1433,如果没有那就肯定是因为数据库服务器端口 1433端口没开。这时你需要下载SQL_Serve20000的sp3补丁,下载安装后会发现1433端口已经打开了,再次执行程序,顺利执行完毕。
上面是在一台电脑上执行的,接下来我将上面的程序放到另一台电脑(可认为是客户机,ip:192.168.1.2),用直连线将两台电脑连起来,这样原来的电脑就变成了数据库服务器(ip:192.168.1.1)。并且把程序中的语句一中的localhost改为192.168.1.1,其他不变。
执行后又产生establishing socket异常
后来检查发现,在网上邻居中根本看不到对方计算机,然后重新设置网络并打开guest用户,放开权限。
使网上邻居中能出现对方计算机,然后再次执行程序,顺利执行完毕。
接下来,开始加入Jbuilder2006了,我在Jbuilder中写了一个连接数据库的类,其他地方做了相关修改,因为代码太多,无法在这些出来。这里只把问题写出来:
没想到的是,都修改完之后,软件运行时居然出现下面异常:
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at Sql_db_test.init(Sql_db_test.java:21)
at Sql_db_test.(Sql_db_test.java:16)
at Sql_db_test.main(Sql_db_test.java:36)
这不是说驱动找不到吗??为什么??后来在网上一查才知道自己孤陋寡闻,简直太菜了!!!原来在JBUILDER里也得设置驱动程序的路径,设置方法如下:
打开Jbuilder,
选择ToolsConfigureLibraries,
然后在左边的列表框下选择New,填入:Name:sql,Location:User Home,然后点击Add,
加入目录C:\Program Files\Microsoft SQL Server 2000 JDBC\lib,确定
三、ProjectPrject PropertiesPathsRequired LibrariesAdd
加入刚才添加的User Home/sql确定
四、EnterpriseEnterprise SetupDatabase DriversAdd,加入User Home/sql,
添加之后在列表框中显示的是sql.config,确定,重新启动JBuilder
五、ToolsDatabase
PilotViewOptionsDriversAdd
填入
Driver class:com.microsoft.jdbc.sqlserver.SQLServerDriver
Simple URL:microsoft:sqlserver://localhost:1433;DatabaseName=mybase
确定之后,ToolsDatabase PilotNew的Driver里选择
com.microsoft.jdbc.sqlserver.SQLServerDriver
在URL里填入:
microsoft:sqlserver://服务器Ip地址或主机名:1433;DatabaseName=数据库名,确定!
双击或点击 号输入sql数据库的用户名和密 码,就完成了JB与sql的连接!
之后再运行软件,一切正常。可自己也累得精疲力尽了。
至此,我又一次深深了解到软件开发的博大精深,我不过才管窥一斑而已,如果一直走下去,路还很长很长......
近期一定努力学习mvc,structs,ejb,spring方向是B/S架构!!
开发环境为:JDK1.5 Jbuilder2006 SQL_Server2000 sp3
首先,配制环境,其中包括下载JDBC FRO Microsft SQL_Server2000的驱动程序(在微软官方网站下的,是sp3版的,这里就不写具体地址了,网上挺多的,但注意版本,我下的是sp3)。下载后发现是EXE 文件,双击安装。默认安装目录:C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC,其中C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib目录下的三个扩展名为.jar是我们要的驱动。然后配制环境变量:
在classpath这个环境变量里加入以下语句:
C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;
如果你的机子上正确配制了JDK的环境变量就应该有CLASSPATH这个环境变量,若没有就新建一个。
其实配环境变量的目的就是让系统能找到驱动程序,如果不配,执行下面一段代码时会产生无法找到驱动的异常,导致程序无法执行。
做完上述事情后,我用UltraEdit这个软件先写了连接数据库的代码来试验,代码如下:
/* try to connct SQL_Server database*/
import java.sql.*;
public class Sql_db_test{
Connection con;
Statement sta;
ResultSet rs;
String sql_driver;
String sql_url;
String user;
String pwd;
public Sql_db_test(){
sql_driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//驱动
sql_url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=manage";//语句一,其中manage是要访问的数据库名
user="xiaolin";//你要访问的数据库用户名
pwd="123456";//访问数据库的密 码
init();
浙公网安备 33010602011771号