[转载]JDBC基础-更新表

JDBC基础-更新表
假设Coffee Break咖啡馆成功开业一周后,老板想通过输入每种咖啡的销售数量来更新COFFEES表的SALES列。这时就可用如下SQL语句更新一行数据:
String updateString = "UPDATE COFFEES " +
"SET SALES = 75 " +
"WHERE COF_NAME LIKE 'Colombian'";

使用Statement对象stmt,下面的JDBC代码将执行updateString中的SQL语句:

stmt.executeUpdate(updateString);

执行后,COFFEES表如下所示:

COF_NAMESUP_IDPRICESALESTOTAL
Colombian1017.99750
French_Roast498.9900
Espresso1509.9900
Colombian_Decaf1018.9900
French_Roast_Decaf499.9900

这里还没更新TOTAL列,因此它仍为0。

现在我们来选择更新过的行,检索COF_NAME和SALES列的值,然后输出这些数据:

String query = "SELECT COF_NAME, SALES FROM COFFEES " +
"WHERE COF_NAME LIKE 'Colombian'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String s = rs.getString("COF_NAME");
int n = rs.getInt("SALES");
System.out.println(n + " pounds of " + s +
" sold this week.");
}

执行上面的程序将输出:

75 pounds of Colombian sold this week.

由于WHERE子句的限制,所以在结果集rs中只有一行,从而也只有一行输出。因此可以编写没有while循环的代码:

rs.next();
String s = rs.getString(1);
int n = rs.getInt(2);
System.out.println(n + " pounds of " + s + " sold this week.");

即使结果集中只有一行也要用next方法访问。创建ResultSet对象时光标定位在第一行的上面。第一次调用next方法时光标将定位在rs的第一行(本例只有一行)。上面的代码只调用next一次,因此如果有另外的行将不会访问到。

现在来更新TOTAL列,将本周销售量加到现有的迄今销售量,然后输出迄今销售量:

String updateString = "UPDATE COFFEES " +
"SET TOTAL = TOTAL + 75 " +
"WHERE COF_NAME LIKE 'Colombian'";
stmt.executeUpdate(updateString);
String query = "SELECT COF_NAME, TOTAL FROM COFFEES " +
"WHERE COF_NAME LIKE 'Colombian'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String s = rs.getString(1);
int n = rs.getInt(2);
System.out.println(n + " pounds of " + s + " sold to date.");
}

注意,本例使用列索引代替列名,传递给getString的 索引是1(结果集的第一列是COF_NAME),传递给getInt的索引是2(结果集的第二列是TOTAL)。一定要注意,数据库表的列索引和结果集的 列索引是有区别的。例如,TOTAL是COFFEES表的第5列,但在上例查询生成的结果集中是第二列。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-132044/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-132044/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值