我自己写的一个连接数据库的程序:
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class Jdbctest
{
protected Jdbctest()
{
}
public static void main(String [] args)
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(ClassNotFoundException ce)
{
System.out.println(ce);
}
try
{
String url="jdbc:microsoft:sqlserver://localhost:1433;databassName =friends";
Connection con=DriverManager.getConnection(url,"sa","sa");
Statement s=con.createStatement();
ResultSet rs=s.executeQuery("select * from friends");
while(rs.next())
{
System.out.print(rs.getString(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getInt(3)+"\t");
System.out.print(rs.getDate(4)+"\t");
System.out.print(rs.getInt(5)+"\t");
System.out.println(" ");
}
rs.close();
s.close();
}
catch(SQLException ce)
{
System.out.println(ce);
}
}
}
但是运行的时候会产生ClassNotFoundException的异常,明显就是我的jdbc的驱动注册不成功,我查了一晚上csdn上相关的帖子,用提到的方法都不能解决,例如修改环境变量——CLASSPATH= .;C:\driver\msbase.jar;C:\driver\mssqlserver.jar;C:\driver\msutil.jar ,或者直接复制到/……/jre/lib/ext所在的ext目录,或者用jdk1.4都是不能解决问题。我用JCreator Pro或者直接在命令行“java Jdbctest”都是出同样的问题。
而其中有些朋友说过自己也有类似的经历,不过有时候重装系统或者直接装windows2000就解决了。我用的是XP,jdk是用1.5,而我在ms下载的SQL Server 2000 Driver for JDBC Service Pack 3似乎又没有明确说明支持1.5。
所以我想问问大家是不是xp或者jdbc驱动版本的问题?我这种情况还有什么方法可以解决?
弄了一晚上,也弄不好非常郁闷,而且小弟刚来,分不多,大家高抬贵手,帮帮忙啊~~~~~
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class Jdbctest
{
protected Jdbctest()
{
}
public static void main(String [] args)
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(ClassNotFoundException ce)
{
System.out.println(ce);
}
try
{
String url="jdbc:microsoft:sqlserver://localhost:1433;databassName =friends";
Connection con=DriverManager.getConnection(url,"sa","sa");
Statement s=con.createStatement();
ResultSet rs=s.executeQuery("select * from friends");
while(rs.next())
{
System.out.print(rs.getString(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getInt(3)+"\t");
System.out.print(rs.getDate(4)+"\t");
System.out.print(rs.getInt(5)+"\t");
System.out.println(" ");
}
rs.close();
s.close();
}
catch(SQLException ce)
{
System.out.println(ce);
}
}
}
但是运行的时候会产生ClassNotFoundException的异常,明显就是我的jdbc的驱动注册不成功,我查了一晚上csdn上相关的帖子,用提到的方法都不能解决,例如修改环境变量——CLASSPATH= .;C:\driver\msbase.jar;C:\driver\mssqlserver.jar;C:\driver\msutil.jar ,或者直接复制到/……/jre/lib/ext所在的ext目录,或者用jdk1.4都是不能解决问题。我用JCreator Pro或者直接在命令行“java Jdbctest”都是出同样的问题。
而其中有些朋友说过自己也有类似的经历,不过有时候重装系统或者直接装windows2000就解决了。我用的是XP,jdk是用1.5,而我在ms下载的SQL Server 2000 Driver for JDBC Service Pack 3似乎又没有明确说明支持1.5。
所以我想问问大家是不是xp或者jdbc驱动版本的问题?我这种情况还有什么方法可以解决?
弄了一晚上,也弄不好非常郁闷,而且小弟刚来,分不多,大家高抬贵手,帮帮忙啊~~~~~
另外,你的SP3的补丁应该是手动不上去才行的,SP3的JDBC在JDK1.5下没有问题主要问题是XP特别是SP2把1433端口屏蔽了,需要打补丁如果一切确定没问题了,看看你有没有把驱动程序加到开发工具里
CLASSPATH= .;C:\driver\msbase.jar;C:\driver\mssqlserver.jar;C:\driver\msutil.jar 解决方法2:
直接复制到/……/jre/lib/ext所在的ext目录以上两个方法我都分别试过,但是问题还是一样
java.sql.SQLException:No suitable driver找不到驱动,所以当然就抛出第二个没有找到合适驱动的异常我在网上又找到一个别人写好的测试连接的程序,运行后出现的第一句异常是一模一样的,证明真的是我的驱动有问题,但是试过很多办法都不行,难道真要重装系统装2000或者重装sqlserver?
一下是我在网上找到的另一段代码,也是编译通过,运行时抛出找不到类的异常
/************************************************
/*
/*DbTest.java
/*
/******************************************* */
import java.sql.*; public class DbTest
{
Connection con;
Statement sta;
ResultSet rs;
String driver;
String url;
String user;
String pwd;
public DbTest()
{
driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";;
url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName =StoreManager";
user = "sa";
pwd = "potsmart10";
init();
}
public void init()
{
try{
Class.forName(driver);
System.out.println("driver is ok");
con = DriverManager.getConnection(url,user,pwd);
System.out.println("conection is ok");
sta = con.createStatement();
rs = sta.executeQuery("select * from room");
while(rs.next())
System.out.println(rs.getInt("roomNum"));
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String [] args)
{
new DbTest();
}
}
你用什么编译器?
这个问题主要是因为编译器没认到包,
象jbuilder,
虽然你加入到jdk里,
但在工程属性里还是应该再引入的。
如果用jbuilder时,
Project-->Prject Properties-->Paths-->Required Libraries-->Addjcreatro时,也应该引入那三个包