jsp jdbc为什麽不能把数据insert到sql server 中,也不能从sql server中提取数据?!
用jbuilder的debug是总是到了while(rs.next())处停下,好想是说我在.jsp和.class中的查找数据的索引指没有和sql server中建的数据的列名对应,Web Run时就说NullPointerException... ...可我已使他们一样了! 怎样才能让他们对应起来呢?///////////////main.jsp的 代码:
<%
String sql;
ResultSet rs;
sql="select*from basiclyb order by addtime desc";
basicDB.DBConnect();
rs=basicDB.executeQuery(sql);
///////////////////就是下面这句//////////////////////////////
while(rs.next()){
out.print("<tr><td width=500 bgcolor=#EEEEEE><a href=view.jsp?id=");
out.print(rs.getInt("id"));
out.print("target=bottom> ; ");
out.print(rs.getString("title"));
out.print("</a></td><td width=130 bgcolor=#eeeeee><div align=center>");
out.print(rs.getString("author"));
out.print("</div></td><td width=130 bgcolor=#EEEEEE><div align=center>");
out.print(rs.getString("addtime"));
out.print("</div></td></tr>");
}
%>
////////////////////////插入sql server中数据的jsp代码//////////
<%
String author,title,content;
author=(String)request.getParameter("author");
title=(String)request.getParameter("title");
content=(String)request.getParameter("content");
author=escapeHTMLTags(author);
title=escapeHTMLTags(title);
content=escapeHTMLTags(content);
if(checkDataValid(author)&&checkDataValid(title)){
String sql;
sql="insert into basiclyb(title,author,content,body)VALUES('";
sql+=title;
sql+="','";
sql+=author;
sql+="','";
sql+=content;
sql+="')";
byte[]temp=sql.getBytes("iso-8859-1");
String sqlCStr=new String(temp);
out.println(basicDB.DBConnect());
basicDB.executeQuery(sqlCStr);
response.sendRedirect("liuyanban.htm");
}
%>
高手指点!
问题点数:20、回复次数:7Top
1 楼realyfly(^_^)回复于 2002-07-21 13:49:25 得分 10
insert和delete,update到sql server 都不应该生成记录集的,所以
rs=basicDB.executeQuery(sql);执行的时候,如果sql是insert和delete,update,rs就是空的
如果是insert和delete,update语句
直接basicDB.executeQuery(sql);就行了Top
2 楼zhaoweiemail(剑心)回复于 2002-07-21 13:53:19 得分 5
正如上面说的,你在插入、修改、删除记录时不产生结果集,你应该执行basicDB.executeUpdate(sql);这样就行了。Top
3 楼zjgj(重体力劳动者)回复于 2002-07-21 13:53:20 得分 5
是用basicDB.executeUpdate(sql)Top
4 楼jcreatorqijiashe(秋天的童话)回复于 2002-07-21 21:31:40 得分 0
好的我试一试。Top
5 楼jcreatorqijiashe(秋天的童话)回复于 2002-07-21 22:37:58 得分 0
不行啊,如果只保留basicDB.executeUpdate(sql)把下面全去掉的话jsp叶面就会说: class riso.mybook.jsp.c7.basicDBBean 中未找到方法 executeUpdate(java.lang.String)。
basicDB.executeUpdate(sql);
^
1 个错误
///////////////////////main.jsp///////////////////////////////
while(rs.next()){
out.print("<tr><td width=500 bgcolor=#EEEEEE><a href=view.jsp?id=");
out.print(rs.getInt("id"));
out.print("target=bottom> ; ");
out.print(rs.getString("title"));
out.print("</a></td><td width=130 bgcolor=#eeeeee><div align=center>");
out.print(rs.getString("author"));
out.print("</div></td><td width=130 bgcolor=#EEEEEE><div align=center>");
out.print(rs.getString("addtime"));
out.print("</div></td></tr>");
}
我把javabean文件的basicDBBean中的basicDB.executeQuery(sql)改成basicDB.executeUpdate(sql)后,连编译都通不过。说:C:\tomcat\webapps\ROOT\WEB-INF\classes\basicDBBean.java:28: incompatible types
found : int
required: java.sql.ResultSet
rs=s.executeUpdate(sql);
^
1 error
下面是bean的代码:////////////basicDBBean.java//////////////////
public class basicDBBean {
private String DBLocation="jdbc:odbc:basiclyb";
private String DBDriver="sun.Jdbc.Odbc.JdbcOdbcDriver";
private ResultSet rs=null;
private Connection conn=null;
public basicDBBean() {
}
public ResultSet executeUpdate(String sql){
if(conn==null){
DBConnect();
}
if(conn==null)
rs=null;
else{
try{
Statement s=conn.createStatement();
rs=s.executeUpdate(sql);
}
catch(SQLException e){}
}
return (rs);
}
public String DBConnect()
{
String strExc="";
try{
Class.forName(DBDriver);
conn=DriverManager.getConnection(DBLocation,"riso","");
}
catch(ClassNotFoundException e){
strExc=e.toString();
}
catch(SQLException e){
strExc=e.toString();
}
return(strExc);
}
public void setDBLocation(String location){
DBLocation=location;
}
public void setDBDriver(String driver){
DBDriver=driver;
}
public void setconn(Connection conn){
conn=conn;
}
public String getDBLocation(){
return (DBLocation);
}
public String getDBDriver(){
return(DBDriver);
}
public ResultSet getRS(){
return(rs);
}
public Connection getconn(){
return(conn);
}
}
这是为什麽?Top
6 楼zhaoweiemail(剑心)回复于 2002-07-21 22:42:15 得分 0
public ResultSet executeUpdate(String sql){
if(conn==null){
DBConnect();
}
if(conn==null)
rs=null;
else{
try{
Statement s=conn.createStatement();
rs=s.executeUpdate(sql);
}
catch(SQLException e){}
}
return (rs);
}
应该必成
public void executeUpdate(String sql){
if(conn==null){
DBConnect();
}
else{
try{
Statement s=conn.createStatement();
s.executeUpdate(sql);
}
catch(SQLException e){}
}
}
Top
7 楼jcreatorqijiashe(秋天的童话)回复于 2002-07-21 23:36:35 得分 0
问题解决了!非常感谢!可还有一点疑问,我查java的API文档时明明看到:
executeUpdate
public int executeUpdate(String sql)
throws SQLException
Executes an SQL INSERT, UPDATE or DELETE statement. In addition, SQL statements that return nothing, such as SQL DDL statements, can be executed.
Parameters:
sql - an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing
Returns:
either the row count for INSERT, UPDATE or DELETE statements, or 0 for SQL statements that return nothing
Throws:
SQLException - if a database access error occurs
说明executeUpdate是int型的,为什麽按照文档上写的去做会不正确呢?Top




