程序员的工作并不是总是都充满了创造性。由于某些原因(比如ui设计人员的想当然,或者领导的反复无常),我不得不去做一些烦琐的工作。这不,又来了。
工作要求:把A表的CODE字段内容前加上“CODE_”前缀。(A表ID字段是主键)
A表如下
+----------------+
| A |
+----------------+
| ID | CODE |
+----------------+
数据库中几百条记录难道要我一条一条的修改么?当然我可不愿意这么做。程序员的美德——懒惰——又在我心中作祟了。数据库程序员可能马上会想到PL/SQL吧,它具有可编程能力,解决这个问题简直是小菜一碟。我刚到公司的时候也受过PL/SQL的培训,不过仅半天的培训,我只是像听科普讲座一样大概了解一下。况且这么久,也忘的差不多了。作为一个Java程序员我又想到了其他办法——java.sql包。
直入正题,代码如下:
/**
* ChangeCode.java
* 修改tb_sys_codeitem表的c_typecode字段
*
* <code>
* <p>Created on 2005-12-2 13:09:57</p>
* <p>By lonely bug </p>
* </code>
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ChangeCode {
public static void main(String[] args) throws Exception{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection Conn = DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.29.253:1521:oradb", "lonelybug", "lonelybug");
Statement stmtSel = Conn.createStatement();
ResultSet rs = stmtSel.executeQuery("select * from A");
while (rs.next()) {
String oldCode = rs.getString("CODE");
long id = rs.getLong("ID");
Statement stmtUpd = Conn.createStatement();
StringBuffer sql = new StringBuffer(
"update A set CODE = '");
sql.append("CODE_").append(oldCode).append("' where ID = ")
.append(id);
stmtUpd.executeQuery(sql.toString());
stmtUpd.close();
}
rs.close();
stmtSel.close();
Conn.close();
}
}
java.sql包是如此的方便,能把我们从繁重的劳动中解脱出来:)尤其是对这种大数量的更新记录工作有奇效。也许明天,领导说把现在A表中的所有记录的B字段带CODE_前缀的去掉CODE_前缀,不带CODE_前缀的加上CODE_前缀。Oh,my God!不过我想这难不倒我:)