JSP中无法调用 JavaBean来实现Update语句。请来看看。(50分)

  • 主题发起人 主题发起人 nzfsoft
  • 开始时间 开始时间
N

nzfsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
JavaBean:
package OperatData;
import java.sql.*;
public class conn {
//String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
//String sConnStr = "jdbc:odbc:vote";
Connection connect = null;
ResultSet rs = null;
Statement stmt=null;
//====================================================================
String user="sa";
//连接数据库的用户名
String password="nrcrd";
//连接数据库的密码,
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=NJGH";

//上面一行为访问sql server2000的数据库地址和名字
String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

//上面一行为访问sql server2000的数据库的驱动程序地址,建议把驱动放在tomcat的WEB-INF/classes下
//=====================================================================
public void init() {
rs=null;
try
{//Class.forName(sDBDriver);
Class.forName(driver);
}
catch(java.lang.ClassNotFoundException e)
{System.err.println( e.getMessage());}
}
public ResultSet Open(String sql) {
rs = null;
try {
//connect = DriverManager.getConnection(sConnStr);
connect =DriverManager.getConnection(url,user,password);
Statement stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
}
public int Excute(String sql)
{ int i=11;
int n=0;
try {
connect =DriverManager.getConnection(url,user,password);
Statement stmt = connect.createStatement();
i=stmt.executeUpdate(sql);

stmt.close();

connect.close();
i=88;
}
catch(SQLException ex)
{ i=99;}
return i ;
}
}

我调用JavaBean的JSP文件 如下:
<%@ page contentType="text/html;
charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="dataset" scope="request" class="OperatData.conn"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<title>利用JavaBean操作MS Sqlserver2000数据库</title>
</head>
<body>
<%
int t;
int mtotal;
int size;
t=0;
String sql;
dataset.init();
//初始化,无返回值。
sql="select * from news";
ResultSet rst=dataset.Open(sql);
//查询后返回一个结果集,用一个ResultSet的变量rst去接受,注意要定义。
//dataset.Excute(sql);
//更新操作,无返回值。
while(rst.next()) {%>
您的第一个字段内容为:<%=rst.getString(1)%>
您的第二个字段内容为:<%=rst.getString(2)+"<br>"%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%
sql="update members set xm='99' where xm='11' ";
t=dataset.Excute(sql);
out.println("Updated="+t);
%>
<%rst.close();
dataset.Close();
%>
</body>
</html>

为什么 我的Excute方法无效?
1.好像没执行。
2.为什么JSP中无法获得返还值?



 
sql="update members set xm='99' where xm='11' ";
改成 sql="update members set xm=/'99/' where xm=/'11/' ";
试一下.

 
先试一下
public int Excute(String sql)
{ int i=11;
int n=0;
try {
connect =DriverManager.getConnection(url,user,password);
Statement stmt = connect.createStatement();
。。。。。。
connect和stmt是否正常有效

<jsp:useBean id="dataset" scope="request" class="OperatData.conn"/>
~~~~~~~~~~
中改为
<jsp:useBean id="dataset" scope="page" class="OperatData.conn"/>
 
改一下
Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
 
好了,我自己解决了。为了后来的查找方便。公布答案如下:
package OperatData;
import java.sql.*;
public class conn {
//String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
//String sConnStr = "jdbc:odbc:vote";
Connection connect = null;
ResultSet rs = null;
Statement stmt=null;
//====================================================================
String user="sa";
//连接数据库的用户名
String password="nrcrd";
//连接数据库的密码,
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=NJGH";

//上面一行为访问sql server2000的数据库地址和名字
String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

//上面一行为访问sql server2000的数据库的驱动程序地址,建议把驱动放在tomcat的WEB-INF/classes下

//=====================================================================
public void init() {
rs=null;
try
{
Class.forName(driver);
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println( e.getMessage());
}
}
public ResultSet Open(String sql) {
rs = null;
try
{
connect =DriverManager.getConnection(url,user,password);
Statement stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}

return rs;
}

public int Excute(String sql) throws SQLException,java.io.UnsupportedEncodingException
{ int i=0;
int n=0;
try
{
connect =DriverManager.getConnection(url,user,password);
connect.setAutoCommit(false);
Statement stmt = connect.createStatement();
i=stmt.executeUpdate(sql);

connect.commit();

stmt.close();

connect.close();
}
catch(SQLException ex)
{ connect.rollback();
i=0;
}
return i ;
}

public void Close(){
try{
if (rs!=null) rs.close();
if (stmt!=null) stmt.close();
if (connect !=null) connect.close();}
catch(SQLException ex)
{}
}
}
 
多人接受答案了。
 
你先监视一下传到数据库中的SQL是实际情况是怎么样的吧
 
我该如何监视呢?
 
后退
顶部