高分求教数据库修改问题!!

cola28 2003-05-27 11:00:48
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html;charset=gb2312"%>
<%!
String[] sub;
%>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<% String[] id = request.getParameterValues("id");
String[] name = request.getParameterValues("name");

<%
Connection myCon;
Statement stmt;
ResultSet myRs;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
myCon=DriverManager.getConnection("jdbc:odbc:cola01");
stmt=myCon.createStatement();
%>



<font size=5 color="#006633">
修改后用户记录为:<br>
<%
if(id.equals("")) return;
for (int j=0; j < id.length; j++)
{
sub[j]= "update abc set name= '"+name[j]+"' where id='"+id[j]+"' ";//这一句
stmt.executeUpdate(sub[j]); //和这句不要的时候就正确的执行了下一句,但是加上以后就出现了java.lang.NullPointerException的错误!
out.println(id[j]);out.println(name[j]);
}
%>

</font>

<BR>
<CENTER><u><font color="#800000" size="5"><a href="yonghu.jsp">返 回</a></font></u></CENTER>

</BODY>
</HTML>
为什么会有这样的情况?
out.println(id[j]);out.println(name[j]);出来的数据如果是数字或字母就是正确的,如果是中文就不对,但是这两项不会为空,可以不判断这种情况!
java.lang.NullPointerException是不是只有参数没传到的可能啊?还有什么可能啊??谢谢!请大家给我详细一点的意见!
...全文
15 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sikuan 2003-05-28
  • 打赏
  • 举报
回复
if(upcount<1){
out.println("第"+i+"次插入失败");
out.println(id[j]);
out.println(name[j]);
return;
}else{
out.println(("第"+i+"次插入成功");
}
sikuan 2003-05-28
  • 打赏
  • 举报
回复
for (int j=0; j < id.length; j++)
{
sub[j]= "update abc set name= '"+name[j]+"' where id='"+id[j]+"' ";//这一句
stmt.executeUpdate(sub[j]); //和这句不要的时候就正确的执行了下一句,但是加上以后就出现了java.lang.NullPointerException的错误!
out.println(id[j]);out.println(name[j]);
}

=>
int upcount=0
for (int j=0; j < id.length; j++)
{

stmt.executeUpdate("update abc set name= '"+name[j]+"' where id='"+id[j]+"' ");
if(upcount<1){
out.println("插入失败");
out.println(id[j]);
out.println(name[j]);
return;
}
}
meizizi 2003-05-28
  • 打赏
  • 举报
回复
sub[j] 你的这个数组定义后没有初始化就使用,一定是空指针。
String[] sub = new String[id.length]
把这局加在for (int j=0; j < id.length; j++)前边。
数组一定要 new之后,或是 sub = 已经初始化的数组,才可以操作的。
woxinyongheng 2003-05-28
  • 打赏
  • 举报
回复
在你的
String[] id = request.getParameterValues("id");
String[] name = request.getParameterValues("name");这段代码中传给id和name的
变量有可能为乱码(如果为中文的话)这样你在
sub[j]= "update abc set name= '"+name[j]+"' where id='"+id[j]+"' ";
stmt.executeUpdate(sub[j]); 这段代码中执行时id[j]变量有可能为乱码,在数据库
中会找不到。这是我的一种猜测,你可以参考。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧