回:skyjust(饭团猫) ( )我是用select语句,不改变数据,这样rollback有错的正常应该不会有错的。至少我一直在CLOSE CONNECTION前执行一次ROLLBACK操作(因为我所有CONNECTION都是SETAUTOCOMMIT为FALSE的)。 所以应该有很多SELECT语句都在执行后执行了ROLLBACK,不过都没有错误。刚看了下CONNECTION的API,原来是这样: public void rollback() throws SQLExceptionUndoes all changes made in the current transaction and releases any database locks currently held by this Connection object. This method should be used only when auto-commit mode has been disabled. 注意后面一句:This method should be used only when auto-commit mode has been disabled. 希望对你有帮助。另外,凡是SQL语句,都可以在一个SQL工具里面预先执行测试过啊,所以应该不存在 你这种问题,执行前还要检查其合法性。 反正我是这么认为,你既然是写出了SQL语句,那么一定要保证正确(即,经过测试), 到运行时去判断SQL语句的正确与否,意义不大。
有你要的东西
忘了说了,只能够只用jdk1.3的包
其实我用的语句都是用select开始的
如果用try{}catch Exception{}的话,如果sql是正确的,岂不是要等执行完才知道是否正确,
能够检查应的表和字段当然更好,我先是最基础的要求,只要语法正确,
oracle在执行sql之前会先对整个语句进行编译,其实我想要的只是编译是否成功,而不想让它执行
java不会检查sql语句是否正确,正确与否是在数据库方检验的
没有意义
用正则表达式匹配一下就可以了
使用:
import java.util.regex.Matcher
import java.util.regex.Patternpublic boolean 检查SQL(String sqlstr){
Pattern p = Pattern.compile("a*b"); //根据不同数据库写不同的正则表达式
Matcher m = p.matcher(sqlstr); //"select * from fsdfdf"
return m.matches();
}
用正则的话,正确语法的sql的正则该怎么写?好像很麻烦
如果自己不写,网上肯定有现成的这个不知道使用什么语言表达的SQL SERVER SELECT 语法,改成正则吧SELECT [ ALL | DISTINCT ]
[ TOP n [ PERCENT ] [ WITH TIES ] ]
< select_list >< select_list > ::= { *
| { table_name | view_name | table_alias }.*
| { column_name | expression | IDENTITYCOL | ROWGUIDCOL }
[ [ AS ] column_alias ]
| column_alias = expression
} [ ,...n ]
try
{
transaction.start();
//执行SQL语句
//没错,提交
transaction.commit();
}
catch (Exception e)
{
//出错,回滚
transaction.rollback();
}
所以应该有很多SELECT语句都在执行后执行了ROLLBACK,不过都没有错误。刚看了下CONNECTION的API,原来是这样:
public void rollback()
throws SQLExceptionUndoes
all changes made in the current transaction and releases any database locks currently held by this Connection object. This method should be used only when auto-commit mode has been disabled. 注意后面一句:This method should be used only when auto-commit mode has been disabled. 希望对你有帮助。另外,凡是SQL语句,都可以在一个SQL工具里面预先执行测试过啊,所以应该不存在
你这种问题,执行前还要检查其合法性。
反正我是这么认为,你既然是写出了SQL语句,那么一定要保证正确(即,经过测试),
到运行时去判断SQL语句的正确与否,意义不大。