JDBC基础-更新表
假设Coffee Break咖啡馆成功开业一周后,老板想通过输入每种咖啡的销售数量来更新COFFEES表的SALES列。这时就可用如下SQL语句更新一行数据:
假设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);
COF_NAME | SUP_ID | PRICE | SALES | TOTAL |
Colombian | 101 | 7.99 | 75 | 0 |
French_Roast | 49 | 8.99 | 0 | 0 |
Espresso | 150 | 9.99 | 0 | 0 |
Colombian_Decaf | 101 | 8.99 | 0 | 0 |
French_Roast_Decaf | 49 | 9.99 | 0 | 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/