java 执行 sql语句问题

这个语句b=stmt.execute("insertintoStudentvalues("+Sno+","+"'"+Sname+"'"+","+pass+","+"'"+... 这个语句
b = stmt.execute("insert into Student values("+Sno +","+ "'" + Sname +"'" +","+pass +","+ "'" + Sex + "'" +","+"'" +Sdept+ "'"+")");
b 是boolean类型 返回结果为false 就是没有执行吧?
为什么没有执行 是我哪里写错了?
Student表是这样的

是我没写单引号的问题 ? 还是多写了单引号?
刚才在 命令行查了一下 语句执行了 但是 返回结果为什么是false??
展开
 我来答
zjf_1175
2013-06-26 · TA获得超过407个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:112万
展开全部
从表结构来看,你的sql语句是有问题的,你的java程序中的sql分明使用的是变量并且这4个表字段的类型都是字符类型,所以必须用单引号 ‘’ ,再者,这个 execute方法的返回值是boolean类型,并非如你所说返回false就是没有执行,其实这个boolean结果的含义如下:
true 有结果集返回(也就是你执行的是select 查询语句),false 没有结果集返回(也就是你的执行是非select 查询语句),另外,建议你在执行非select sql 语句时,使用executeUpdate() 方法,这个方法返回int类型值,是对数据库表操作的影响行数(例如,如果成功更新10行数据,则返回10,返回0则对数据库表没有影响),还有建议你使用PreparedStatement 这个数据库sql操作流,它支持参数设置,如何使用你自己查吧。。。。
更多追问追答
追问
executeUpdate() 我用了 直接卡死了 ,,你看下面 为什么
追答
你的这里就有问题,insert into ..... values("+Sno+"............) 这个Sno 是Stirng类型,也就是对应你表的char或者varcahr类型,如果要写也应该是 '"+Sno+"' , 外部单引号里边双引号,在用++连接变量Sno 你先把这个弄好吧,再说不是建议你使用PreparedStatement 这个sql流吗..
幸福情感小子
2013-06-26 · TA获得超过164个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:169万
展开全部
因为你说语句已执行,所以sql语句应该没问题,出问题的就在提示信息上,也就是stmt.execute上,那改为(stmt应该是Statement初始化的吧)
int a=0;
a = stmt.executeUpdate("insert into Student values("+Sno +","+ "'" + Sname +"'" +","+pass
+","+ "'" + Sex + "'" +","+"'" +Sdept+ "'"+")");
if(a>0)
{
b=true;
}
else
{
b=true;
}
//如果你要是将b=a = stmt.executeUpdate("insert into Student values("+Sno +","+ "'" + Sname +"'" +","+pass
+","+ "'" + Sex + "'" +","+"'" +Sdept+ "'"+")");
//如果一旦执行,则b=1;因为没有下列的语句,所以猜想若下面有像While
语句,肯定陷入死循环,因为executeUpdate返回的是受影响行数,所以赋值给一个整形,判断整形是否大于-来决定是否执行。从而给b赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小圣12345
2013-06-26 · TA获得超过820个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:158万
展开全部
execute执行,如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。如果返回
int,则意味着结果是更新计数或执行的语句是 DDL 命令。
追问

我改成 executeUpdate了  但是直接卡死了。

system。out。println(“0”); 没有执行 直接卡住 为什么啊?

追答
//我以前的程序 你参考下吧
//执行单句INSERT、UPDATE 或 DELETE 语句, 如果执行INSERT时, 返回主键
public int executeUpdate(String sql) {
int result = -1;
try {
//执行SQL语句
stmt.executeUpdate(sql);
//获得主键
ResultSet rs = stmt.getGeneratedKeys();
while(rs.next()) {
//返回最后一个主键
result = rs.getInt(1);
}
rs.close();
return result;
} catch (Exception e) {
throw new QueryException(e.getMessage());
}
}

 你把b= 去掉试试.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sdfb21
2013-06-26 · 超过15用户采纳过TA的回答
知道答主
回答量:73
采纳率:66%
帮助的人:21.7万
展开全部
b = stmt.execute("insert into Student values('"+Sno +"',' "+ Sname +"','"+password +"','" + SEX+ "','" +Sdept+ "')");
更多追问追答
追问
你看一下我别的追问。 怎么改
追答
有pass 吗   不是password吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式