急急急,JDK连数据库出现java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver错误,如何解决?

wuyanny 2005-01-28 03:27:10
我想用DIRVER-API的方法连接数库,但当我用JAVA连数据库时出现这种错误:java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
应如何解决?问题应该是说没找到这个驱动吧,可是classpath都配置好了,在JSP也可以访问,但放到JAVA中就不行了,是什么问。难道,还要将msbase.jar、mssqlserver.jar、msutil.jar放到JDK中

以下是我的配置:classpath=D:\j2sdk1.4.2\bin;.;D:\j2sdk1.4.2\lib;D:\j2sdk1.4.2\lib\dt.jar;D:\j2sdk1.4.2\lib\tools.jar;D:\Program Files\Apache Software Foundation\Tomcat 5.0\lib\servlet-api.jar;D:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;D:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;D:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar

以下是源代码:

import java.sql.*;
import java.io.*;

public class conDatabase
{
private String DRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";
//private String URL="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=1;DatabaseName=pubs";
private Connection con=null;
private Statement stmt=null;
private ResultSet rs=null;
public void connection()throws ClassNotFoundException,SQLException
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
try
{
String URL="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=1;DatabaseName=pubs";
con=DriverManager.getConnection(URL);
}
catch(Exception e)
{
System.out.println("Connection to Database");
}
}
public ResultSet statement(sql)
{
try
{
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
//System.out.println(sql);
}
catch(Exception e)
{
System.out.println("Unconnection to Database");
}
return rs;
}
public void close1()throws ClassNotFoundException,SQLException
{
try
{
rs.close();
rs=null;

stmt.close();
stmt=null;
}
finally
{
if(con!=null)
{
con.close();
con=null;
}
}
}
}

class conTest
{
public static void main(String[] args)
{
try
{
ResultSet rstest=null;

String sql="select * from jobs";

conDatabase con1=new conDatabase();

con1.connection();
rstest=con1.statement();
while(rstest.next())
{
System.out.println(rstest.getString(1));
System.out.println(rstest.getString(2));
}
rstest.close();
rstest=null;
con1.close1();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
...全文
505 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
皮鲁 2005-01-28
  • 打赏
  • 举报
回复
运行JAVA类文件的时候 java -classpath "xxx"
把.class的路径,JAR包都写在xxx里
如果再Eclipse,JB等IDE中运行,得把JAR文件加入到工程的CLASSPATH里。
shan1119 2005-01-28
  • 打赏
  • 举报
回复
有msbase.jar,mssqlserver.jar,msutil.jar吗?
以梦为马 2005-01-28
  • 打赏
  • 举报
回复
up
wuyanny 2005-01-28
  • 打赏
  • 举报
回复
还是没找到驱动~
wuyanny 2005-01-28
  • 打赏
  • 举报
回复
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at conTest.main(conTest.java:9)
GJA106 2005-01-28
  • 打赏
  • 举报
回复
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url = "jdbc:microsoft:sqlserver://192.168.0.151:1433;DatabaseName=chan";
//pubs为你的数据库的
String user = "sa";
String password = "";
Connection conn = DriverManager.getConnection(url, user, password);
conn.isClosed();
Statement stmt = conn.createStatement();
String sql = "select * from news";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}
wuyanny 2005-01-28
  • 打赏
  • 举报
回复
加我的QQ:33267828
wuyanny 2005-01-28
  • 打赏
  • 举报
回复
msserver是自己安装的?
GJA106 2005-01-28
  • 打赏
  • 举报
回复
"c:\msserver\lib\"目录下的所有jar包。
wuyanny 2005-01-28
  • 打赏
  • 举报
回复
-classpath "c:\msserver\lib\.;." 代表什么?
GJA106 2005-01-28
  • 打赏
  • 举报
回复
1.main方法,也就是程序入口是在conTest类中,如果有这个conTest.java文件,则应该把
javac -classpath "c:\msserver\lib\.;." conDatabase.java
java -classpath "c:\msserver\lib\.;." conDatabase
修改成
javac -classpath "c:\msserver\lib\.;." conTest.java
java -classpath "c:\msserver\lib\.;." conTest

2.楼主了可以直接把main方法移到conDatabase类中。
wuyanny 2005-01-28
  • 打赏
  • 举报
回复
javac -classpath "c:\msserver\lib\.;." conDatabase.java
java -classpath "c:\msserver\lib\.;." conDatabase

Exception in thread "main" java.lang.NoSuchMethodError: main

还是运行不了~
wuyanny 2005-01-28
  • 打赏
  • 举报
回复
能不能,说细详点呢?
vcvj 2005-01-28
  • 打赏
  • 举报
回复
put Jdbc api(ms*.jar) into WEB-INF/lib/
kehua_gao 2005-01-28
  • 打赏
  • 举报
回复
可能与你用的ide有关
GJA106 2005-01-28
  • 打赏
  • 举报
回复
javac -classpath "c:\msserver\lib\.;." conDatabase.java
java -classpath "c:\msserver\lib\.;." conDatabase

67,542

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧