jsp中用javabean类连接数据库问题. 请各位亲看看.
ODBC连接数据库access数据库没问题.如果是连接sqlserver数据库就出问题.
ODBC数据源都是正常的.
javabean类文件如下:DataBase.java
package kygl.util;
import java.sql.*;
public class DataBase{
public Connection conn;
public Statement stmt;
public ResultSet rs=null;
public String sqlStr="";
public DataBase() {
this.connect();
}
public boolean connect(){
try{
//数据库(ODBC)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String url ="jdbc:odbc:kygl"; //kygl是ODBC数据源名称
conn=DriverManager.getConnection(url,"root","kygl8888");
stmt=conn.createStatement();}catch(Exception ee){System.out.println("connect db error:"+ee.getMessage());return false;
}return true;}
//用于执行查询数据库的操作
//返回查询结果集
public ResultSet execQuery(String sql){
String url ="jdbc:odbc:kygl"; //kygl是ODBC数据源名称
ResultSet rs=null;
try {
//ODBC数据源
conn=DriverManager.getConnection(url,"root","kygl8888");
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch(SQLException ex) {
System.err.println("DataBase.execQuery(): " + ex.getMessage());
}
return rs;
}
//sql执行
public void execute(String sql){
String url ="jdbc:odbc:kygl"; //kygl是ODBC数据源名称
try{
//ODBC数据源
conn=DriverManager.getConnection(url,"root","kygl8888");
Statement stmt = conn.createStatement();
stmt.execute(sql);
}catch(SQLException e){e.printStackTrace();}}
public void closeStmt(){
try{
stmt.close();}catch(SQLException e){e.printStackTrace();}
}
public void closeConn(){
try{
conn.close();}catch(SQLException e){e.printStackTrace();}
}
} --------------------编程问答-------------------- 是不是忘记加入sqljdbc.jar包哇. --------------------编程问答--------------------
import java.sql.Connection;--------------------编程问答--------------------
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
class DBHelper {
private static final String user="sa";
private static final String pwd="sa1";
private static final String url="jdbc:sqlserver://192.168.1.10:1433;databasename=CenterDb";
// private static final String user="zhangwei";
// private static final String pwd="123456";
// private static final String url="jdbc:sqlserver://192.168.1.99:1433;databasename=ytxNewsData";
private static Connection conn=null;
//private static final String url=PropertiesUtil.getValue("jtds_url");
public static Connection getConn(){
try {
if(conn==null||conn.isClosed()){
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn=DriverManager.getConnection(url, user, pwd);
System.out.println(".....成功创建一个新的连接..,conn="+conn);
}
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void closeDB(Connection conn,Statement stmt,ResultSet rs){
try {
if(rs!=null){
rs.close();
rs=null;
}
if(stmt!=null){
stmt.close();
stmt=null;
}
if(conn!=null&&!conn.isClosed()){
conn.close();
conn=null;
System.out.println(".....关闭了conn,conn="+conn);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Connection con = DBHelper.getConn();
String sql="select * from Data";
Statement stmt = con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while (rs.next()) {
num=rs.getString(1);
}
这是调用 --------------------编程问答-------------------- javax.servlet.ServletException: [Microsoft][ODBC SQL Server Driver]????????
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.kygl.reg_jsp._jspService(reg_jsp.java:144)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
root cause
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]????????
sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3908)
sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5702)
sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:356)
sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:413)
org.apache.jsp.kygl.reg_jsp._jspService(reg_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
--------------------编程问答-------------------- lib目录有sqljdbc.jar
sqlserver是2000 --------------------编程问答-------------------- 很奇怪 写在jsp中可以连接ODBC-sqlserver方式的数据库
<%@ page contentType="text/html;charset=gb2312" language="java"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.net.*"%>
<html>
<body>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:kygl1","sa","111111");
Statement state=con.createStatement();
String sql="select * from yh";
ResultSet Rs=state.executeQuery(sql);
out.print(" <h1> <font color=red> "+"学生基本情况表"+" </h1> ");
out.print(" <font> ");
out.print(" <table border=2> ");
out.print(" <tr> ");
out.print(" <th width=150> "+"学号");
out.print(" <th width=150> "+"姓名");
out.print(" <th width=150> "+"班级");
out.print(" </tr> ");
while(Rs.next())
{
out.print(" <tr> ");
out.print(" <td> "+Rs.getInt(1)+" </td> ");
out.print(" <td> "+Rs.getString(2)+" </td> ");
out.print(" <td> "+Rs.getString(3)+" </td> ");
out.print(" </tr> ");
}
out.print(" </table> ");
con.close();
%>
<br>
</body>
</html>
补充:Java , Web 开发