java连接数据库问题 不显示内容

我用java连接数据库,没有抛出任何异常,但是我想返回数据库的内容,但是就是没有相关信息。后来我想测试一下,显示连接成功。也就是Connection con的值不为null。

进一步测试,我把databasename的值改为一个我数据库中没有的数据库,但是显示依然成功,请问这是怎么回事,是驱动还是什么别的原因造成的。

用你的代码运行了一遍 完全没有问题 问题出在
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books";//books的数据库名
这里

url中1433;后面多出了空格,找不到数据库,当然也找不到表

把你的代码贴出来

[quote]Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
[/quote]
把 .newInstance() 去掉试试

不懂了。。。
1. 试试将[quote]String sql="select * from BOOKS";[/quote]
改为 select LoginNUM from BOOKS
2. [quote]System.out.println(rs.getString("LoginNUM")); [/quote]
不要使用列标志,而是使用index ,如 rs.getString(1),可能只认大写的列名

Connection conn= DriverManager.getConnection(url, "sa","sa"); 加判断看是否链接上数据库
if(null == conn){
System.out.println("error");
}else{
//TODO 执行查询操作
}
这样看看

首先看下你有没导jar包,然后就是各种打印conn,stmt,rs看看他们都是不是为null

while(rs.next()) ?不是hasNext()?

靠,不好意识看错了,忽略我上面的

你数据库jar报引了没,还有就是你表里面有数据没,看看

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnect {

public Connection getConnect(String driver, String url, String user, String pwd) {
    Connection conn = null;
    try {
        Class.forName(driver);
        conn = DriverManager.getConnection(url, user, pwd);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return conn;
}

public void closeConnect(Connection conn) {
    if(conn != null) {
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

}

package util;

import java.sql.Connection;
import java.sql.SQLException;

import java.sql.Statement;

public class SqlExecutor {

private Connection conn;
private Statement stmt;
private DBConnect db = new DBConnect();

public int[] exeBatch(String driver, String url, String user, String pwd, String[] sqls) {
    int[] result = new int[sqls.length];
    conn = db.getConnect(driver, url, user, pwd);
    try {
        stmt = conn.createStatement();
        for (int i = 0; i < sqls.length; i++) {
            if (sqls[i].endsWith(";"))
                stmt.addBatch(sqls[i]);
        }
        result = stmt.executeBatch();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        db.closeConnect(conn);
    }
    return result;
}

}

LZ看看

[code="java"]import java.sql.*;
public class LuceneDb{
public static void main(String[] args)
{
try
{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String url ="jdbc:sqlserver://10.160.8.71:1433;databaseName=joffice";
Connection conn= DriverManager.getConnection(url, "sa","123456");
Statement stmt=conn.createStatement();
String sql="select * from BOOKS";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString("LoginNUM"));
}

}catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}[/code]
你的代码是没有问题的,我只是把驱动换了一下,因为你的那个在我这找不到;所以你也试着换一下驱动包试试,我觉得肯定是驱动包的问题。你换个驱动试试吧

[code="java"]
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url ="jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=books";//books的数据库名
Connection conn= DriverManager.getConnection(url, "sa","sa");
System.out.println(conn);

}catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}

[/code]

这样就应可以的,你调试一下看看。

你的数据库名好像没用吧

看错了呵呵

sqlserver的url是这么写的吗?
我没用过

你在主方法里调用的数据库连接是另一个。所以修改这个没用。

建立连接SQL Sever 的[b]数据源了[/b]没?

确定数据库的表里有数据的话,试试把jdbc换jtds试试,百度一下就有连接字符串什么的

好像是这样的

1433端口打开了没?

System.out.println(rs.getString("LoginNUM"));

rs.getString(行,"列")

先别急查数据,先把connection对象打出来,看看是否是null.如果有值,说明连接成功,
打然再断点,

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
注意上面的区别:一个是sql2000 一个是sql2005
com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc:sqlserver://localhost:1433;databaseName=security

我怕虽然没有用过sqlserver连接数据库,但是mysql,DB2,oracle我都用过的,都是这个代码的,你的JAR包,也就是驱动包,对应的版本搞对了没有啊啊?
我就怀疑你的驱动包的版本呢?

我觉得你的代码是没有问题的,。

在一个,看看你的服务是不是开启的?

应该是你数据库的Jar包问题,代码可以运行

1、rs、stmt、conn没有关闭
2、BOOKS表有没有数据? LoginNUM列有没有数据? LoginNUM字段类型是不是varchar

:shock: 8) :P :oops: :roll: :twisted: :( :wink:

看看"LoginNUM”什么类型的,再决定怎样显示结果。