初学,讨论关于执行SQL的问题。

DJMPH 2002-10-18 11:52:30
PreparedStatement preStmt;
String strSQL = "insert into Forum(UserID,Title,DateTime) values(?,?,?)";
try {
preStmt = cn.prepareStatement(strSQL);
preStmt.setString(1,userID);
preStmt.setString(2,CnStr.toTureAsciiStr(title));
preStmt.setString(3,datetime);
preStmt.executeUpdate();
}
catch(Exception e) {
System.out.println(e);
}
以上是JSP的推荐执行方式,预处理会使执行很快。
但是UserID是从数据库中的UserID最大加一,DateTime是服务器时间的话,那么SQL就可以写成"insert into Forum(UserID,Title,DateTime) select isnull(max(word.id),0) + 1,'" + sTitle + "',getdate()"
这样看来,某些情况下(前面仅仅举个例子,不一定实用),我是说在如用户注册等情况下,就会比上最面JSP推荐的方式么好的多,至少方便维护,就不用专门得到一些服务器、数据库的数据了:)
因为本人长期从事B/S开发,里面的SQL语句常常使用SQL嵌套语法与重命名方法。现在刚从事B/S开发,所以不知道大家是怎么做的,从书上的方法看来是建议最前面的做发的。看来JSP好像是不提倡不预处理的吧,反正我又胡涂了:(
如果大家有好的方法请教教我。
...全文
39 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
DJMPH 2002-10-19
  • 打赏
  • 举报
回复
在数据库应用中,自增字段和时间戳字段是应尽量避免使用的,应为他不利于对数据的控制和更改。所以很多时候大家都不使用的。我的意思不是在数据库本身,而是在处理复杂SQL的时候应该怎么预处理。
christinadingkou 2002-10-18
  • 打赏
  • 举报
回复
自动加一可以用序列发生器,插入时间用sysdate
可乐加水 2002-10-18
  • 打赏
  • 举报
回复
这个可以建表的时候把userid设成自动加一
而datetime设成默认系统时间,这样只要执行
String strSQL = "insert into Forum(Title) values(?)";
try {
preStmt = cn.prepareStatement(strSQL);
preStmt.setString(2,CnStr.toTureAsciiStr(title));
preStmt.executeUpdate();
}
不就可以了吗

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧