当前位置: 技术问答>java相关
初学,讨论关于执行SQL的问题。
来源: 互联网 发布时间:2015-10-05
本文导语: 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.execut...
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好像是不提倡不预处理的吧,反正我又胡涂了:(
如果大家有好的方法请教教我。
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好像是不提倡不预处理的吧,反正我又胡涂了:(
如果大家有好的方法请教教我。
|
这个可以建表的时候把userid设成自动加一
而datetime设成默认系统时间,这样只要执行
String strSQL = "insert into Forum(Title) values(?)";
try {
preStmt = cn.prepareStatement(strSQL);
preStmt.setString(2,CnStr.toTureAsciiStr(title));
preStmt.executeUpdate();
}
不就可以了吗
而datetime设成默认系统时间,这样只要执行
String strSQL = "insert into Forum(Title) values(?)";
try {
preStmt = cn.prepareStatement(strSQL);
preStmt.setString(2,CnStr.toTureAsciiStr(title));
preStmt.executeUpdate();
}
不就可以了吗
|
自动加一可以用序列发生器,插入时间用sysdate