JDBC连接Sqlserver数据库为什么没有记录呢?
-----------------------------------DB.java文件内容---------------------------------/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.llshboy.db;
import java.sql.*;
/**
*
* @author Administrator
*/
public class DB
{
private Connection con;
private Statement stm;
private ResultSet rs;
private String classname = "com.microsfot.sqlserver.jdbc.SQLServerDriver";
private String url = "jdbc:sqlserver://sqlserver:1334;DatabseName=erpdb";
public DB()
{
}
public Connection getCon()
{
try {
Class.forName(classname);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con = DriverManager.getConnection(url, "sa", "123456");
}
catch (Exception e) {
e.printStackTrace(System.err);
con = null;
}
return con;
}
public Statement getStmed()
{
try {
con = getCon();
stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
}
catch (Exception e) {
e.printStackTrace(System.err);
}
return stm;
}
public ResultSet getAllRs()
{
String sql = "select * from [N-基本资料单头] ";
try {
stm = getStmed();
rs = stm.executeQuery(sql);
}
catch (Exception e) {
e.printStackTrace();
rs = null;
}
return rs;
}
}
---------------------------index.jsp文件的内容-----------------------
<%--
Document : index
Created on : 2013-8-16, 14:19:11
Author : Administrator
--%>
<%@page import="java.sql.*"%>
<%@page contentType="text/html" pageEncoding="GBK"%>
<jsp:useBean id="db" class="com.llshboy.db.DB" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%
ResultSet rs=db.getAllRs();
if(rs==null)
{
%>
<table>
<tr align="center" valign="middle"><td colspan="4">没有记录显示!</td></tr>
<%
}
else
{
while(rs.next())
{
%>
<tr align="center" valign="middle" height="22">
<td><%=rs.getString("员工代号") %></td>
<td><%=rs.getString("姓名") %></td>
<td><%=rs.getString("性别") %></td>
</tr>
</table>
<%
}
}
%>
</body>
</html>
没有任何错误提示,直接显示:没有记录显示,我实在找不到问题所在!
数据库 SQL Server JDBC --------------------编程问答-------------------- rs==null改成!rs.next()试试 --------------------编程问答--------------------
这样改,影响我下面的while语句中的rs.next()不? --------------------编程问答-------------------- 影响,下面得改成do while --------------------编程问答-------------------- catch (Exception e) {
e.printStackTrace();
rs = null;
}
这叫没有记录?没有记录也会返回结果集对象,不会rs==null。 --------------------编程问答--------------------
改成这样后,if(rs.next())抛出了空异常! --------------------编程问答--------------------
catch (Exception e) {
e.printStackTrace();
rs = null;
}
这叫没有记录?没有记录也会返回结果集对象,不会rs==null。
关键是,前的一句e.printStackTrace();没有错误提示呀! --------------------编程问答-------------------- 先把sql直接拿到数据库里跑一下看看有记录没
--------------------编程问答-------------------- jdbc:sqlserver://sqlserver:1334
这个是ip? --------------------编程问答-------------------- sqlserver的url不得这样写吗。。jdbc:microsoft:sqlserver://localhost:1433;DatabaseName= --------------------编程问答-------------------- url不对吧 --------------------编程问答-------------------- 毫无疑问是抛异常了,否则数据库会返回一个空的rs,绝不会返回null。你可以做两件事:
第一,在执行SQL之前,把stm打印出来,同时catch里打印一句话,随便打什么,只是为了看看程序有没有走进catch里
第二,不要使用jsp,直接在java类里面把rs的结果打出来,看看结果你就明白了 --------------------编程问答--------------------
sqlserver的url不得这样写吗。。jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=
说不定人家设定的端口是1334呢 --------------------编程问答--------------------
sqlserver的url不得这样写吗。。jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=
说不定人家设定的端口是1334呢
那前面那部分呢 --------------------编程问答-------------------- 哈哈,我是看着例子输入的,我去检查一下,具体url对不对,不过,我们的端口就是1334,我改的, --------------------编程问答--------------------
先把sql直接拿到数据库里跑一下看看有记录没
这个是我erp系统里的数据,里面有几千个人员记录呀,不可怀疑这个! --------------------编程问答--------------------
jdbc:sqlserver://sqlserver:1334
这个是ip?
是的呀,我们的数据库服务器的电脑名称就是sqlserver这个电脑名称的。 --------------------编程问答--------------------
jdbc:sqlserver://sqlserver:1334
这个是ip?
是的呀,我们的数据库服务器的电脑名称就是sqlserver这个电脑名称的。
直接写IP靠谱点吧。前面还有个:microsoft --------------------编程问答-------------------- 各位,兄弟姐妹,我终于知道原因了:
1. 我下载的是jdbc for sqlserver 4.0的,这个版本的不支持sqlserver2000.
必须改为jdbc for sqlserver 3.0的。
2. 在电脑的环境变量里设定:CLASSPATH,他的值为:jdbc for sqlserver 3.0安装的目录,比如我的是:
C:\Program Files\Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\sqljdbc4.jar
3. 将C:\Program Files\Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\auth\x86\下的文件:
sqljdbc_auth.dll复制到java JDK的bin目录下:比如我的是:C:\Program Files\Java\jdk1.7.0_15\bin
4. 由于我安装的是java jdk 1.7所以,我使用了sqljdbc4.jar,如果是1.6及以下的,有可能是要换成
sqljdbc.jar。
5. 我在用NetBeans7.4开发的,所以,必须在工程项目中的库一项中,引用库(右击:添加jar文件):
C:\Program Files\Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\sqljdbc4.jar
6. 以上步骤操作后,一切成功!
--------------------编程问答-------------------- 你的con,stm,rs用完记得close.. --------------------编程问答-------------------- 话说NetBeans长啥样都没见过 --------------------编程问答--------------------
你的con,stm,rs用完记得close..
哥,谢谢你,这个第一次学习jsp开发,我一直用微软的东西。 --------------------编程问答--------------------
你的con,stm,rs用完记得close..
哥,谢谢你,这个第一次学习jsp开发,我一直用微软的东西。
还是叫我弟吧。。估计比你小,我90的。。
--------------------编程问答-------------------- 除 --------------------编程问答-------------------- 很好,学到了
补充:Java , Web 开发