日期:2014-05-20  浏览次数:20909 次

用statement查询数据库中的表,怎么老是说对象名无效呢??
import java.sql.*;
public class jdbc {
static
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}catch(ClassNotFoundException e)
{
System.out.println(e.getMessage());
}
}
public static void main(String[]args)
{
try
{
   Connection conn = DriverManager.getConnection("jdbc:odbc:student","sa","");
   Statement st = conn.createStatement();
   ResultSet sr = st.executeQuery("select * from c");
   while(sr.next())
   {
   String cno = sr.getString(1);
   String cname = sr.getString(2);
  
   System.out.println("cnumber:"+cno+";name:"+cname);
   }
   st.close();
   conn.close();
}catch(SQLException e)
{
System.out.println(e.getMessage());
}

}

}
这是关于sqlserver 2000和java连接的一段代码,数据库名称叫做student,为什么查询其中的表的时候总是说对象名c无效呢?其中c是数据库中的一个表。各位大侠帮帮忙!!小弟谢了!!
------最佳解决方案--------------------
估计 ODBC 配置得有问题。

另外,不要使用 JDBC/ODBC 驱动,现实中没人会去用这个的。

建议你去下载 SQL Server 2000 的 JDBC 驱动程序,使用 JDBC 来做。
------其他解决方案--------------------
引用:
估计 ODBC 配置得有问题。

另外,不要使用 JDBC/ODBC 驱动,现实中没人会去用这个的。

建议你去下载 SQL Server 2000 的 JDBC 驱动程序,使用 JDBC 来做。

我顶这个,怎么还用JDBC:ODBC驱动啊,这个方式只是理论上用,现实一般不用。
------其他解决方案--------------------
权限问题
你连接数据库的用户没权限查这张表
------其他解决方案--------------------
除1楼所说的可能外,还有一种可能:

你的C这张表是不是属于sa的?
因为你是用sa登录的,如果你的c这张表不是sa的,而是其它用户(如:user)的,那么,查询语句应该这么写:
select * from user.c

------其他解决方案--------------------
可是我的sa是用权限的呀,它是超级用于,是dbo啊,怎么会没有权限呢?我试了好几台电脑还是不起作用呢?

------其他解决方案--------------------
SQL server安装好后,需要一系列配置才能用,好像要启动XX服务,因为XX服务默认是停止的,记不清了,百度上肯定有
------其他解决方案--------------------
都没抓住问题的本源吧

昨天的问题还在这里。。。

很显然 只能是权限问题


如果服务没起,你是连不上数据库的

现在你是连上了,但是没有找到对象,说明你没权限或者确实没这个对象
------其他解决方案--------------------
谢谢各位了!真的是受益匪浅啊!我也知道odbc比较麻烦,可是因为不太清楚这个sql server 2000 的jdbc驱动程序怎么用,所以就想用jdbc-odbc来实现,野草这位仁兄真是一语惊醒梦中人啊!!我试试!有问题我再继续提问!!
------其他解决方案--------------------
拜托谁能指点一下,关于sql server 2000 的jdbc驱动程序该怎样才能让eclipse识别呢?

------其他解决方案--------------------
你怎么不用MySql呢