}//出错信息 java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'Users' 无效。 at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) at db.ConnectSql.query(ConnectSql.java:22) at db.ConnectSql.main(ConnectSql.java:71) java.lang.NullPointerException at db.ConnectSql.main(ConnectSql.java:73) Exception in thread "main"
你为什么不这么写呢??这么写不是很简单么? Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:sqlserver","sa",""); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(url);你那么写反到复杂了 (local)就是你本机的啊。你的意思是什么啊....
谢谢大家,我的问题解决了,只要把这句rs=cs.query("select * from Users");改称rs=cs.query(" use Hospital select * from Users");程序就没有错误了,Hospital是我自己建的数据库,我把Users这个表建在Hospital这个数据库下面拉!
package db;
import java.sql.*;public class ConnectSql {
String servername="542D0C50072D4DE";
String url = "jdbc:odbc:sqlserver";
String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
Connection connect=null;
ResultSet rs=null;
public ConnectSql(){
try{
Class.forName(sDBDriver);
}catch(java.lang.ClassNotFoundException e){
System.err.println(e.getMessage());
}
}
public ResultSet query(String sql){
try{
connect=DriverManager.getConnection(url,"sa","");
Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}
catch(SQLException ex){
ex.printStackTrace();
}
return rs;
}
public int update(String sql){
int result=0;
Statement stmt=null;
try{
connect=DriverManager.getConnection(url,"sa","");
stmt=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
result=stmt.executeUpdate(sql);
return result;
}catch(SQLException ex){
ex.printStackTrace();
}finally{
try{
stmt.close();
connect.close();
}catch(SQLException ex){
ex.printStackTrace();
}
}
return result;
}
public boolean close(ResultSet rs){
boolean ret=false;
Statement st=null;
Connection con=null;
try{
st=rs.getStatement();
con=st.getConnection();
rs.close();
st.close();
con.close();
ret=true;
}catch(SQLException e){
e.printStackTrace();
}
return ret;
}
//测试一下
public static void main(String [] ss){
ConnectSql cs=null;
cs=new ConnectSql();
ResultSet rs=null;
rs=cs.query("select * from Users");
try{
while(rs.next()){
System.out.println(rs.getString("UserName"));
// System.out.print("***");
System.out.println(rs.getString("Pwd"));
// System.out.print("***");
System.out.println(rs.getInt("User_Type"));
}
}catch(SQLException e){
e.printStackTrace();
}
}
}//出错信息
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'Users' 无效。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at db.ConnectSql.query(ConnectSql.java:22)
at db.ConnectSql.main(ConnectSql.java:71)
java.lang.NullPointerException
at db.ConnectSql.main(ConnectSql.java:73)
Exception in thread "main"
<%@ 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>
你数据库里面有没有Users这个表啊
Class.forName(sDBDriver);类对象是程序的一部分,每个类都有一个Class对象,即每当编写并且编译了一个新类,就会产生一个Class对象,在运行时,想生成这个类的对象时,运行这个程序的jvm会首先检查这个类的Class对象是否已经加载,如未加载,jvm就会根据类名查找 .class文件,并将其载入.而Class.forName("("sun.jdbc.odbc.JdbcOdbcDriver");")
不仅产生Class对象,这一句并没有生成实例,如果要生成实例要用
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();虽然,newInstance的意思就是让虚拟机在加载类的同时构造一个类的对象,现在一般的驱动程序中都有静态方法在加载的时候会运行,这个静态方法会自动创建对象,不过,为了稳妥起见,建议你还是使用创建这个对象。
我创建的数据库里面有Users这个表啊!对了,谁能再告诉我如何在 "开始"--"程序"--"microsoft SQL Server" 中打开"企业管理器"到"SQL Server 组"下,将"[lcoal](Windows NT)"改成自己的机器名啊,我单击右键,也没有更改这个选项啊,那怎么把"[lcoal](Windows NT)"改成自己的机器名啊!!!!
愁死我了都!
Connection con = DriverManager.getConnection("jdbc:odbc:sqlserver","sa","");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(url);你那么写反到复杂了
(local)就是你本机的啊。你的意思是什么啊....