例如
异常源语句:ResultSet set = smt.executeQuery("select * from 存在的表名 group by 不存在的字段");
会引发异常:java.sql.SQLException: 不能将已选定 '*' 的字段中组合。异常源语句:ResultSet set = smt.executeQuery("select * from 存在的表名 order by ");
会引发异常:java.sql.SQLException: ORDER BY 子句语法错误异常源语句:ResultSet set = smt.executeQuery("select from 存在的表名");
会引发异常:java.sql.SQLException: SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。异常源语句:ResultSet set = smt.executeQuery("* from 存在的表名");
会引发异常:java.sql.SQLException: 无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。我现在就想知道 smt.executeQuery引发的所有异常列表,或者怎么得到这些异常结果就是一个列表:
不能将已选定 '*' 的字段中组合。
ORDER BY 子句语法错误
SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。
...异常SQLsql.SQLException
异常源语句:ResultSet set = smt.executeQuery("select * from 存在的表名 group by 不存在的字段");
会引发异常:java.sql.SQLException: 不能将已选定 '*' 的字段中组合。异常源语句:ResultSet set = smt.executeQuery("select * from 存在的表名 order by ");
会引发异常:java.sql.SQLException: ORDER BY 子句语法错误异常源语句:ResultSet set = smt.executeQuery("select from 存在的表名");
会引发异常:java.sql.SQLException: SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。异常源语句:ResultSet set = smt.executeQuery("* from 存在的表名");
会引发异常:java.sql.SQLException: 无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。我现在就想知道 smt.executeQuery引发的所有异常列表,或者怎么得到这些异常结果就是一个列表:
不能将已选定 '*' 的字段中组合。
ORDER BY 子句语法错误
SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。
...异常SQLsql.SQLException
所以如果我没理解错的话,你是想要一个语句中所有包含的错误,那在executQuery这个函数上是做不到的。我对JDBC这一块不熟,不知道是否有其他方法能解决你的问题,等内行
不同的数据库有不同的错误码。自己判断一下就可以了。
2、我给你个建议:
a、可以先判断数据库是否存在,一般都是存在的。
b、通过封装一个黑盒函数,该函数就是读取该数据库的所有schema,并且按照key-value的方式缓存起来,key就是表名称,value可以是该表对应的字段json;然后增加一些简单的sql分词算法,例如:select时候,应该取from后面单词作为表名称等等,然后根据你的算法输出相应的结果。关键就是分词算法问题。个人愚见,仅供参考!
2、读取该数据库的所有schema怎么实现??
3、分词我想简单地用正则就可以了
DatabaseMetaData dbmd = connection.getMetaData();
esultSet resultSet = dbmd.getSchemas();ResultSetMetaData rsmd = rs.getMetaData();
自己再查查就知道怎么用了!
其实此jdbc真的是问题多多。
比如,你要打印stmt,set赋值后的,执行的sql语句。就是一个大问题。