java源代码混淆:jsp预编译这个例题。。怎么也做不出来。。

来源:百度文库 编辑:高校问答 时间:2024/04/26 17:37:59
预编译不成功...
odbc已经建立pufan,并指向phonebook.

<%@page import="java.sql.*"%>
<%@page contentType="text/html;charset=GB2312"%>

<%

String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:pufan";

String updata = "UPDATE phonebook"
+"set phone=?,addr=?"
+"where name=1";

try
{
Class.forName(driver);
}
catch(Exception e)
{
e.printStackTrace();
out.println("<br>"+"can't loading driver! ");
}

try
{
Connection con = DriverManager.getConnection(url);

PreparedStatement psmt = con.prepareStatement(updata);

psmt.setString('1',"wanglan");
psmt.setString('2',"wangyu");
psmt.setString('3',"wangfang");

psmt.executeUpdate(updata);

psmt.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
out.println("<br>"+updata);
}
%>

这个是更新数据.where就是判断的条件吧?
"where name=1";

我在表里面写成,我想让他...判断到name为1就更新一条记录...
phone addr name
1
1
1

麻烦各位高人不忙时候解答下,感激不仅.

ps:..基础sql在软件里会用,但在jsp里面就晕菜了...这个该如何是好...

第一个:
PreparedStatement psmt的用法有错误
setString的参数是setString(int ,String),而不是setString(String, String)


psmt.setString('1',"wanglan");
psmt.setString('2',"wangyu");
psmt.setString('3',"wangfang");
改成
psmt.setString(1,"wanglan");
psmt.setString(2,"wangyu");
psmt.setString(3,"wangfang");

第二个:
在String updata 中只有两个“?”,后面怎么设置了三个参数?这样在运行时还是会出错

第三个:
你数据库里面name字段的数据类型是什么?如果是varchar,where name=1应该写成where name='1'
虽然有些数据库可以兼容这种写法,不过还是规范一点好