编译路径问题。不一定高手才能帮忙。。。。。。。 ( 积分: 50 )

  • 主题发起人 主题发起人 呵呵o
  • 开始时间 开始时间

呵呵o

Unregistered / Unconfirmed
GUEST, unregistred user!
描述:我在使用jcreator开发java程序,最近我想使用微软的MS Server 2000 for JDBC开发数据库程序,我已经从网站上下了驱动,放在JDK的lib文件夹下,我也在CLASSPATH设置了直到.jar的D:/j2sdk1.4.2/lib/mysqlserver.jar;D:/j2sdk1.4.2/lib/msbase.jar;D:/j2sdk1.4.2/lib/sysutil.jar;路径配置,我也能使用import指令能找到包里的.class文件。
问题:当我加载com.microsoft.jdbc.sqlserver.SQLServerDriver的时候,就报异常,结果是com.microsoft.jdbc.sqlserver.SQLServerDriver,我尝试把驱动改名,就报没有改驱动异常。我也想开发servlet,就是碰上同样的问题,我现在真不知道怎么办,哪位路过的朋友帮忙看看。。。。。
程序能正常编译,就是一直都在报异常!!!!!!
 
描述:我在使用jcreator开发java程序,最近我想使用微软的MS Server 2000 for JDBC开发数据库程序,我已经从网站上下了驱动,放在JDK的lib文件夹下,我也在CLASSPATH设置了直到.jar的D:/j2sdk1.4.2/lib/mysqlserver.jar;D:/j2sdk1.4.2/lib/msbase.jar;D:/j2sdk1.4.2/lib/sysutil.jar;路径配置,我也能使用import指令能找到包里的.class文件。
问题:当我加载com.microsoft.jdbc.sqlserver.SQLServerDriver的时候,就报异常,结果是com.microsoft.jdbc.sqlserver.SQLServerDriver,我尝试把驱动改名,就报没有改驱动异常。我也想开发servlet,就是碰上同样的问题,我现在真不知道怎么办,哪位路过的朋友帮忙看看。。。。。
程序能正常编译,就是一直都在报异常!!!!!!
 
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;313100
概要
本文介绍如何使用 Microsoft SQL Server 2000 JDBC 驱动程序连接到 SQL Server 2000。

注意:有关 Microsoft SQL Server 2000 JDBC 驱动程序的安装说明,请参见 Microsoft SQL Server 2000 Driver for JDBC 安装指南。
安装了 Microsoft SQL Server 2000 JDBC 驱动程序后,可以通过两种方式从您的程序连接到数据库:使用连接 URL,或使用 JNDI 数据源。本文介绍如何使用连接 URL 配置和测试数据库连接。
连接到数据库的一种方法是通过 JDBC 驱动程序管理器,使用 DriverManager 类的 getConnection 方法。使用此方法时,最简单的方式是使用一个包含 URL、用户名和密码的字符串参数。本文中的以下几节将介绍如何从 JDBC 程序载入 Microsoft SQL Server 2000 JDBC 驱动程序。

回到顶端
设置 CLASSPATH 变量
Microsoft SQL Server 2000 JDBC 驱动程序 .jar 文件必须在 CLASSPATH 变量中列出。CLASSPATH 变量是 Java 虚拟机 (JVM) 用于在您的计算机上查找 JDBC 驱动程序的搜索字符串。如果驱动程序未在 CLASSPATH 变量中列出,尝试载入驱动程序时将出现以下错误信息:
java.lang.ClassNotFoundException:com/microsoft/jdbc/sqlserver/SQLServerDriver
设置系统 CLASSPATH 变量,加入以下各项: •
/Your installation path/Lib/Msbase.jar
•
/Your installation path/Lib/Msutil.jar
•
/Your installation path/Lib/Mssqlserver.jar
以下是一个配置好的 CLASSPATH 变量的示例:
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/msutil.jar;c:/program files/Microsoft SQL Server 2000 Driver for JDBC/lib/mssqlserver.jar
回到顶端
注册驱动程序
注册驱动程序的目的是为了通知 JDBC 驱动程序管理器载入哪个驱动程序。当使用 class.forName 函数载入驱动程序时,您必须指定驱动程序的名称。以下是 Microsoft SQL Server 2000 JDBC 驱动程序的名称:
com.microsoft.jdbc.sqlserver.SQLServerDriver
下面的代码示例演示如何注册驱动程序: Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

回到顶端
传递连接 URL
必须以连接 URL 的形式传递数据库连接信息。以下是 Microsoft SQL Server 2000 JDBC 驱动程序的模板 URL。请用您数据库的值替换以下值:
jdbc:microsoft:sqlserver://servername:1433
下面的代码示例演示如何指定连接 URL: con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433", "userName", "password");

服务器名称值可以是 IP 地址或主机名(假定您的网络可以将主机名解析为 IP 地址)。您可以通过对主机名执行 PING 命令来进行测试,验证是否可以接收到响应,以及响应的 IP 地址是否正确。
服务器名称后面的数字值是数据库侦听的端口号。上文列出的值是示例默认值。确保用您的数据库使用的端口号替换该值。
要获取连接 URL 参数的完整列表,请参见 Microsoft SQL Server 2000 JDBC 驱动程序 HTML 帮助,或参见联机指南。请参见“连接字符串属性”一节。

回到顶端
用于测试连接的代码示例
下面的代码示例尝试连接到数据库,并显示数据库名称、版本和可用编目。请用您服务器的值替换代码中的服务器属性: import java.*;
public class Connect{
private java.sql.Connection con = null;
private final String url = "jdbc:microsoft:sqlserver://";
private final String serverName= "localhost";
private final String portNumber = "1433";
private final String databaseName= "pubs";
private final String userName = "user";
private final String password = "password";
// Informs the driver to use server a side-cursor,
// which permits more than one active statement
// on a connection.
private final String selectMethod = "cursor";
// Constructor
public Connect(){}
private String getConnectionUrl(){
return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";
}
private java.sql.Connection getConnection(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
if(con!=null) System.out.println("Connection Successful!");
}catch(Exception e){
e.printStackTrace();
System.out.println("Error Trace in getConnection() : "
+ e.getMessage());
}
return con;
}
/*
Display the driver properties, database details
*/
public void displayDbProperties(){
java.sql.DatabaseMetaData dm = null;
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
if(con!=null){
dm = con.getMetaData();
System.out.println("Driver Information");
System.out.println("/tDriver Name: "+ dm.getDriverName());
System.out.println("/tDriver Version: "+ dm.getDriverVersion ());
System.out.println("/nDatabase Information ");
System.out.println("/tDatabase Name: "+ dm.getDatabaseProductName());
System.out.println("/tDatabase Version: "+ dm.getDatabaseProductVersion());
System.out.println("Avalilable Catalogs ");
rs = dm.getCatalogs();
while(rs.next()){
System.out.println("/tcatalog: "+ rs.getString(1));
}
rs.close();
rs = null;
closeConnection();
}else
System.out.println("Error: No active Connection");
}catch(Exception e){
e.printStackTrace();
}
dm=null;
}
private void closeConnection(){
try{
if(con!=null)
con.close();
con=null;
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception
{
Connect myDbTest = new Connect();
myDbTest.displayDbProperties();
}
}

如果此代码运行成功,其输出结果应类似于以下内容:
Connection Successful!
Driver Information
Driver Name:SQLServer
Driver Version: 2.2.0022
Database Information
Database Name:Microsoft SQL Server
Database Version:Microsoft SQL Server 2000 - 8.00.384 (Intel X86)
May 23 2001 00:02:52
Copyright (c) 1988-2000 Microsoft Corporation
Desktop Engine on Windows NT 5.1 (Build 2600: )
Avalilable Catalogs
catalog:master
catalog:msdb
catalog:pubs
catalog:tempdb

回到顶端
有关排除连接故障的基本信息
下面是尝试连接到 SQL 服务器时常见的错误信息:
java.sql.SQLException:[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Login failed for user 'user'.Reason:Not associated with a trusted SQL Server connection.
如果将 SQL Server 2000 的验证模式设置为“Windows 验证模式”,则会出现此错误信息。Microsoft SQL Server 2000 JDBC 驱动程序不支持使用 Windows NT 验证进行连接。您必须将 SQL Server 的验证模式设置为“混合模式”,该模式既允许 Windows 验证,也允许 SQL Server 验证。
java.sql.SQLException:[Microsoft][SQLServer 2000 Driver for JDBC]This version of the JDBC driver only supports Microsoft SQL Server 2000. You can either upgrade to SQL Server 2000 or possibly locate another version of the driver.
当您尝试连接到 SQL Server 2000 以前的 SQL Server 版本时,则会出现此错误信息。Microsoft SQL Server 2000 JDBC 驱动程序仅支持与 SQL Server 2000 进行连接。

-----------------------------------
在JBuilder中使用com.microsoft.jdbc.sqlserver.SQLServerDriver
http://www.chinaunix.net 作者:eclipse 发表于:2002-09-24 22:37:29
在JBuilder中使用com.microsoft.jdbc.sqlserver.SQLServerDriver连接sql数据库

关键字 JBuilder 连接 sql 数据库 jdbc

一,你确定你安装的jdbc是否完全版,因为有个单机版只能连接本机上的sql,单机版约2m,完全版约6.5m
二、安装好jdbc后,假如目录在C:/Program Files/Microsoft SQL Server 2000 JDBC,打开Jbuilder,选择Tools-->Configure Libraries,然后在左边的列表框下选择New,填入:Name:sql,Location:User Home,然后点击Add,加入目录C:/Program Files/Microsoft SQL Server 2000 JDBC/lib,确定
三、Project-->Prject Properties-->Paths-->Required Libraries-->Add
加入刚才添加的User Home/sql确定
四、Tools-->Enterprise Setup-->Database Drivers-->Add,加入User Home/sql,添加之后在列表框中显示的是sql.config,确定,重新启动JBuilder
五、Tools-->Database Pilot-->View-->Options-->Drivers-->Add
填入
Driver class:com.microsoft.jdbc.sqlserver.SQLServerDriver
Simple URL:microsoft:sqlserver://localhost:1433;DatabaseName=mybase
确定之后,Tools-->Database Pilot-->New的Driver里选择
com.microsoft.jdbc.sqlserver.SQLServerDriver
在URL里填入:
microsoft:sqlserver://服务器Ip地址或主机名:1433;DatabaseName=数据库名,确定!
双击或点击+号输入sql数据库的用户名和密码,就完成了JB与sql的连接!
连接代码可以查看Source!
 
感谢chenybin大哥贴出此文,但我我不是不知道classpath的作用,也也是配置了上面所说的环境变量,就连import指令也能找到JDBC包里的class文件,我编译就不能通过,我也不知道为什么。
import java.sql.*;
public class aaa {
public boolean connect(String sname, String dbname) {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user = "sa";
String password = "";
System.out.print("加载成功!!");
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("正在连接...");
if (conn != null) {
return true;
} else
return false;
} catch (Exception e) {
System.out.println(e.getMessage());
// System.out.println(e.getSQLState());
System.out.println(e.getLocalizedMessage());
return false;
}
}
public static void main(String arg[]) {
boolean b = new aaa().connect("", "");
if (b) {
System.out.println("成功连接数据库!!");
} else
System.out.println("连接失败!!!");
}
}
我想我上面的数据库测试程序也没有问题,但为什么就是报异常呢??
结果:
com.microsoft.jdbc.sqlserver.SQLServerDriver
com.microsoft.jdbc.sqlserver.SQLServerDriver
连接失败!!!
程序运行结果连“加载成功!!”都没有,我想那异常就是在驱动加载上了吧。。。
我也发现,当我把classpath的jdbc路径都删除了,运行的结果还是一样的,并没有象微软所说的报“java.lang.ClassNotFoundException:com/microsoft/jdbc/sqlserver/SQLServerDriver ”错误,这又是为什么呢????。。。。
 
不好意思阿,我也是临时找的资料,对JAVA不熟悉的[:)]
 
连接数据库的方法有很多。
如果你的web服务器支持池连接(如weblogic),不妨用池连接,设下JNDI就能用,方便的很,而且我觉得这样比较有效率。
 
不一定要有支持连接池的服务器才用到数据库的吧,我就想在java中连接数据库,以后写serlet也方便点
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部