Java数据库编程

求助:新手自学学Java就是磨难多啊!如题:Java链接mysql数据库,将sql字符串改为“select*fromtablename”可以正常查找到;但是将sql换成其... 求助:新手自学学Java就是磨难多啊!如题:Java链接mysql数据库,将sql字符串改为“select * from tablename”可以正常查找到;但是将sql换成其他的,如修改,插入,删除就报错了。。。无语中。。我确定我的sql代码没有错的,亲手在mysql下敲过的代码。下面是我写的代码和报错信息:
package package1;
import java.sql.*;
import java.util.*;
public class UseMySQlL
{
private ResultSet rs=null;
private Statement pstmt=null;
private Connection conn=null;
public void getConnection()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/abcd","mr_m","0000");
if(conn!=null)
System.out.println("已加载驱动!");
}
catch (ClassNotFoundException e)
{
System.out.println("未找到驱动类");
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public void execSQL()
{
try
{
if(conn==null)
getConnection();
String sql="delete from mytable5"+"where name='maoshilei'";
pstmt=conn.createStatement();
if(pstmt!=null)
System.out.println("已创建操作语句");
rs=pstmt.executeQuery(sql);
if(rs!=null)
System.out.println("已执行sql语句!");
while(rs.next())
{
System.out.println("找到一行");
for(int i=0;i<=3;i++)
System.out.print(rs.getString(i+1)+"\t");
System.out.println("\n");
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
void close()
{
try
{
if(rs!=null)
rs.close();
if(pstmt!=null)
rs.close();
if(conn!=null)
conn.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static void main(String []args)
{
UseMySQlL use=new UseMySQlL();
use.getConnection();
use.execSQL();
use.close();
}
}

报错信息:
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:413)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1297)
at package1.UseMySQlL.execSQL(UseMySQlL.java:44)
at package1.UseMySQlL.main(UseMySQlL.java:83)
Exception in thread "main" java.lang.NullPointerException
at package1.UseMySQlL.close(UseMySQlL.java:69)
at package1.UseMySQlL.main(UseMySQlL.java:84)
已加载驱动!
已创建操作语句
展开
 我来答
小傻

2013-03-23 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部
insert update delete 语句 不能用 executeQuery 执行 应该用 executeUpdate。我觉得你下次自学或者写的程序有错误的时候,你可以把错误贴在网上去,然后去找解决的方法,自己去解决一下,实在解决不了就问一下别人。有些时候不是完成不了功能,确实是你的有些代码是写错了,所以导致无法运行,仔细检查一下代码,细心一点就可以了。
等待III希望
2013-03-23 · TA获得超过161个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:125万
展开全部
rs=pstmt.executeQuery(sql);

改成
boolean flag = pstmt.execute(sql);

executeQuery是查询用方法。不能执行delete
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
superest
2013-03-23 · TA获得超过310个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:221万
展开全部
第34行 rs = pstmt.executeQuery(sql); 明明你的sql语句不是执行的查询工作 你还用executeQuery
改成execute(sql);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大男孩jun
2013-03-23
知道答主
回答量:2
采纳率:0%
帮助的人:3008
展开全部
insert和update和delete都不需要返回结果集ResultSet,所以用户executeQuery ;
而select需要有返回的结果集,要不看什么数据呢, 所以用户executeUpdate
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式