学JSP新手,关于使用数据库操作,更新EXCEL表,不能更新的问题

yzl20030728 2009-08-11 02:14:58
学JSP新手,关于使用数据库操作,更新EXCEL表,不能更新的问题


我的代码如下,更新EXCEL表时提示:java.sql.SQLException: [Microsoft][ODBC Excel Driver] 操作必须使用一个可更新的查询。 不知道这个问题产生的原因,应该怎样处理?请各位高手指点一下,谢谢

excel文件,事前定义了一个名为students的工作区,对应库操作中的表。

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink >
<Font size=1>
<FORM action="newResult.jsp" method=post>
输入要修改成绩的同学的姓名: <BR>
<Input type="text" name="name">
<BR>输入新的数学成绩:
<Input type="text" name="math">
<BR>输入新的英语成绩:
<Input type="text" name="english">
<BR>输入新的物理成绩:
<Input type="text" name="physics">
<BR> <Input type="submit" name="b" value="提交更新">
<P>数据库更新前的数据记录是:
<%
String name,number;
int math,physics,english;
Connection con;
Statement sql;
ResultSet rs;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try{
con=DriverManager.getConnection("jdbc:odbc:sun","","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM students");
out.print(" <Table Border>");
out.print(" <TR>");
out.print(" <TH width=100>"+"学号");
out.print(" <TH width=100>"+"姓名");
out.print(" <TH width=50>"+"数学成绩");
out.print(" <TH width=50>"+"英语成绩");
out.print(" <TH width=50>"+"物理成绩");
out.print(" </TR>");
while(rs.next())
{
out.print(" <TR>");
number=rs.getString(1);
out.print(" <TD >"+number+" </TD>");
name=rs.getString(2);
out.print(" <TD >"+name+" </TD>");
math=rs.getInt("数学成绩");
out.print(" <TD >"+math+" </TD>");
english=rs.getInt("英语成绩");
out.print(" <TD >"+english+" </TD>");
physics=rs.getInt("物理成绩");
out.print(" <TD >"+physics+" </TD>");
out.print(" </TR>") ;
}
out.print(" </Table>");
con.close();
}
catch(SQLException e1) {}
%>
</Font>
</BODY>
</HTML>



newResult.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink > <Font size=1>
<% //获取提交的姓名:
String name=request.getParameter("name");
if(name==null)
{name="";
}
byte b[]=name.getBytes("ISO-8859-1");
name=new String(b);
//获取提交的新的数学成绩:
String newMath=request.getParameter("math");
if(newMath==null)
{
newMath="-100";
}
//获取提交的新的英语成绩:
String newEnglish=request.getParameter("english");
if(newEnglish==null)
{
newEnglish="-100";
}
//获取提交的新的物理成绩:
String newPhysics=request.getParameter("physics");
if(newPhysics==null)
{
newPhysics="-100";
}
Connection con=null;
Statement sql=null;
ResultSet rs=null;
String number,xingming;
int math,english,physics;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try {
con=DriverManager.getConnection("jdbc:odbc:sun","","");
sql=con.createStatement();
String condition1=
"UPDATE students SET 数学成绩 = "+newMath+" WHERE 姓名="+"'"+name+"'" ,
condition2=
"UPDATE students SET 英语成绩 = "+newEnglish+" WHERE 姓名="+"'"+name+"'" ,
condition3=
"UPDATE students SET 物理成绩 = "+newPhysics+" WHERE 姓名="+"'"+name+"'" ;
//执行更新操作:
sql.executeUpdate(condition1);
sql.executeUpdate(condition2);
sql.executeUpdate(condition3);
//显示更新后的表中的记录:
%>
<P>更新后的表的记录:
<%
rs=sql.executeQuery("SELECT * FROM students");
out.print(" <Table Border>");
out.print(" <TR>");
out.print(" <TH width=100>"+"学号");
out.print(" <TH width=100>"+"姓名");
out.print(" <TH width=50>"+"数学成绩");
out.print(" <TH width=50>"+"英语成绩");
out.print(" <TH width=50>"+"物理成绩");
out.print(" </TR>");
while(rs.next())
{
out.print(" <TR>");
number=rs.getString(1);
out.print(" <TD >"+number+" </TD>");
xingming=rs.getString(2);
out.print(" <TD >"+xingming+" </TD>");
math=rs.getInt("数学成绩");
out.print(" <TD >"+math+" </TD>");
english=rs.getInt("英语成绩");
out.print(" <TD >"+english+" </TD>");
physics=rs.getInt("物理成绩");
out.print(" <TD >"+physics+" </TD>");
out.print(" </TR>") ;
}
out.print(" </Table>");
con.close();
}
catch(SQLException e)
{ out.print(e);}
%>
</FONT>
</BODY>
</HTML>
...全文
118 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
风尘中国 2011-07-17
  • 打赏
  • 举报
回复
默认的Excel的ODBC桥连接是只读的属性,需要在URL连接的时候设置为非只读属性,你参看另一篇文章http://mengdejun.iteye.com/blog/485333

62,621

社区成员

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

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