高手来,关于数据库和JSP的连接问题~~~~~~~~`

ljj520 2004-09-29 08:35:25
我在tomcat的环境下
用JSP和Access连接
代码如下
<html>
<head><title>Add User to DB</title></head>
<%@page import="java.sql.*"%>
<body>
<pre>
<%
//Get parameters from request
String name,pwd;
name=request.getParameter("name");
pwd=request.getParameter("pwd");
try{
//add infomation to DB
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:mydb");
out.println(con);
Statement stmt=con.createStatement();
out.println(stmt);
stmt.executeUpdate("insert into User1 values('"+name+"','"+pwd+"')");


//query DB for display all users
ResultSet rs=stmt.executeQuery("select * from User1");
rs.getString("name");
//rs.first();
out.println("All user in DB!");
while(rs.next()){
out.print("user name: ");
out.print(rs.getString("name")+" pwd: ");
out.println(rs.getString("pwd"));
}

//clear,must do it
rs.close();
stmt.close();
con.close();

}catch(Exception ex){
out.println(ex.getMessage());
}
%>
</pre>
</body>
</html>

出现的错误信息如下
sun.jdbc.odbc.JdbcOdbcConnection@19fc25
[Microsoft][ODBC Microsoft Access Driver] ??????????????????

不知道这一连串的??????????????????是怎么回事?
和SQL server也是这样
我是用JDBCODBC连接的
不知道是不是数据源的问题

如果大家也不清楚的话
能不能给我你们连接数据库的的具体步骤和代码呢?
不甚感激!!!!!!!!!!!!!


...全文
85 点赞 收藏 17
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljj520 2004-09-29
刚才用 xunyiren(从jsp开始) 的代码从新做了一遍
又把数据库修改了一点因为我的SQL Server的数据库是从ACCESS中转化来的
所以多了一个ID,删除了以后就可以了
但是现在出现的问题是
上一张网业的用户名(name)的值传不过来了
这个在ASP中是从来没有出现过的
不知道怎么回事
回复
ljj520 2004-09-29
对了
为什么我上一张传来的值的用户名的数据是 NULL
而密码的数据却传过来了?这是上一张的网业的代码<html>
<head><title></title>
</head>
<body>
<form method="post" action="index3.jsp">
<p align="center">姓名
<input type="text" name="name"></p>
<p align="center">密码
<input type="password" name="pwd"></p>
<p align="center">
<input type="submit" name="提交" value="提交"></p>
<form>
</body>
</html>
回复
对数据库的操作执行后,游标默认是在第一条记录之前,所以要rs.next
游标默认是不可滚动的,所以要加ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE把它设为可滚动的
回复
linuxbing 2004-09-29
学习
回复
对,连接没有问题
Statement stmt=con.createStatement();这句改为
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)
后面执行时要先rs.next;
回复
ljj520 2004-09-29
还是不行
是不是从上一张网业传来的值有问题?
回复
xunyiren 2004-09-29
用这个替换上面的一试

<html>
<head><title>Add User to DB</title></head>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%@ page import="java.sql.*"%>
<body>
<pre>
<%
//Get parameters from request
String name,pwd;
name=request.getParameter("name");
pwd=request.getParameter("pwd");
try{
//add infomation to DB
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:mydb");
out.println(con);
Statement stmt=con.createStatement();
out.println(stmt);
stmt.executeUpdate("insert into User1 values('"+name+"','"+pwd+"')");


//query DB for display all users
ResultSet rs=stmt.executeQuery("select * from User1");
out.println("All user in DB!");
while(rs.next()){
out.print("user name: ");
out.print(rs.getString("name")+" pwd: ");
out.println(rs.getString("pwd"));
}

//clear,must do it
rs.close();
stmt.close();
con.close();

}catch(Exception ex){
out.println(ex.getMessage());
}
%>
</pre>
</body>
</html>
回复
ljj520 2004-09-29
连接是正常的
回复
ljj520 2004-09-29
我也怀疑过是数据的编码问题
但是不知道怎么去解决
这个是SQL Server连接的错误信息
[Microsoft][ODBC SQL Server Driver][SQL Server]????: ??????????????????
如何解决?

回复
给你个地址应该可以解决
http://search.csdn.net/Expert/topic/2566/2566686.xml?temp=.8495447
回复
rosifox 2004-09-29
你的编码应该是没错,
你看一下你的数据源设置吧,测试一下连接是否正常
回复
ljj520 2004-09-29
先谢谢各位了

还是不可以

数据库是系统的,如果是编码问题 那应该怎么解决呢?
回复
rosifox 2004-09-29
回复人: artisthl(清香白莲) ( ) 信誉:100 2004-09-29 09:01:00 得分: 0


sun.jdbc.odbc.JdbcOdbcDriver这句改为com.microsoft.jdbc.sqlserver.SQLServerDriver
这是sqlserver的


他是使用JDBC-ODBC桥的,不是采用纯Java驱动的,并没有错,
如果使用纯Java的话要另外下载驱动程序啊
回复
另外Connection con=DriverManager.getConnection("jdbc:odbc:mydb");这句改为
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb");
回复
007 2004-09-29
1、Connection con=DriverManager.getConnection("jdbc:odbc:mydb","","");

2、stmt.executeUpdate("insert into User1 values"+"("+"'"+name+"','"+pwd+"'"+")");
或:String sql="insert into User1 values"+"("+"'"+name+"','"+pwd+"'"+")";
stmt.executeUpdate(sql);

3、ResultSet rs=stmt.executeQuery("select * from User1");
//rs.getString("name"); rs在没有执行如rs.next()这样的动作之前是不能执行这句的。
out.println("All user in DB!");
while(rs.next()){
out.print("user name: ");
out.print(rs.getString("name")+" pwd: ");
out.println(rs.getString("pwd"));
}

//clear,must do it
//rs.close();
//stmt.close();
con.close(); //直接执行这句就行了。


回复
sun.jdbc.odbc.JdbcOdbcDriver这句改为com.microsoft.jdbc.sqlserver.SQLServerDriver
这是sqlserver的
回复
MARS.nEIL 2004-09-29
数据库链接的问题,??????????????????只是显示的中文(你的页面不支持),数据源是系统的吗?
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告