import java.sql.*;
public class SqlServerTest { /**
* @param args
*/
public static Connection connection() throws SQLException, ClassNotFoundException
{
Connection conn = null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:Beloria;uid = sa;pid=123"); return conn;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
conn = connection();
System.out.println("Success!");
//PreparedStatement ps = conn.prepareStatement("select * from users");
//rs = ps.executeQuery();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from users");
System.out.println(rs);
}
catch(Exception e)
{
System.out.println(e);
}
}}
输出结果:
Success!
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'users' 无效。我在数据库里建了users这个表,在数据库里可以用这个select * from users查询到,为什么在程序里不行?
public class SqlServerTest { /**
* @param args
*/
public static Connection connection() throws SQLException, ClassNotFoundException
{
Connection conn = null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:Beloria;uid = sa;pid=123"); return conn;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
conn = connection();
System.out.println("Success!");
//PreparedStatement ps = conn.prepareStatement("select * from users");
//rs = ps.executeQuery();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from users");
System.out.println(rs);
}
catch(Exception e)
{
System.out.println(e);
}
}}
输出结果:
Success!
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'users' 无效。我在数据库里建了users这个表,在数据库里可以用这个select * from users查询到,为什么在程序里不行?
Success!
sun.jdbc.odbc.JdbcOdbcResultSet@863399
System.out.println( rs.getString("users") );
输出是:
Success!
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
我改成System.out.println(rs.getString(0));也是一样的输出。
System.out.println(rs.getString(0));我不记得oracle是从0开始还是从1 开始的了。你试下这样:System.out.println(rs.getString(1));
这个users是这个schema下的表
Success!
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]关键字 'schema' 附近有语法错误。
不是吧。我记得这个是oracle的。
SqlServer 2005是这样的:com.microsoft.sqlserver.jdbc.SQLServerDriver
dbname..users
jdbc的ResultSet在取值前要先调用next(),返回true才会有值。
另外,根据jdbc的规定,用getString()一类的方法,取指定字段的值时,是从1开始的。
没认真看你的异常信息,我还以为你是用oracle的。
Success!
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的描述器索引
这个异常是在输出结果的时候出现的,对应的语句是
System.out.println(rs.getString(0));
索引值换成1也一样,换成列名也是这个结果。
public class SqlServerTest { /**
* @param args
*/
public static Connection connection() throws SQLException, ClassNotFoundException
{
Connection conn = null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:Beloria;uid = sa;pid=123"); return conn;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
conn = connection();
System.out.println("Success!"); //如果输出Success说明连接数据库成功
//PreparedStatement ps = conn.prepareStatement("select * from users");
//rs = ps.executeQuery();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from users");
System.out.println(rs.getString(1)); //这里出现异常,如果改用System.out.println(rs);则输出sun.jdbc.odbc.JdbcOdbcResultSet@2e7263
//说明上面的查询语句没有抛出异常
}
catch(Exception e)
{
System.out.println(e);
}
}}控制台运行结果:
Success!
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态