嗨,我想知道是否可以使用 JDBC 执行类似的操作,因为它目前提供了一个异常,即使它可以在 MySQL 查询浏览器中执行。
"SELECT FROM * TABLE;INSERT INTO TABLE;"
虽然我确实意识到可以拆分 SQL 查询字符串并执行两次语句,但我想知道是否有一次性的方法。
String url = "jdbc:mysql://localhost:3306/";
String dbName = "databaseinjection";
String driver = "com.mysql.jdbc.Driver";
String sqlUsername = "root";
String sqlPassword = "abc";
Class.forName(driver).newInstance();
connection = DriverManager.getConnection(url+dbName, sqlUsername, sqlPassword);
原文由 MilindaD 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道是否可以使用 JDBC 执行类似的操作。
对的,这是可能的。据我所知,有两种方法。他们是
以下示例演示了上述两种可能性。
示例 1 :(允许多个查询):
发送连接请求时,您需要将连接属性
allowMultiQueries=true
附加到数据库 url。 This is additional connection property to those if already exists some, likeautoReConnect=true
, etc.. Acceptable values forallowMultiQueries
property aretrue
,false
,yes
和no
。任何其他值在运行时都会被SQLException
拒绝。除非通过了这样的指令,否则会抛出
SQLException
。您必须使用
execute( String sql )
或其其他变体来获取查询执行的结果。要遍历和处理结果,您需要以下步骤:
示例 2 :要遵循的步骤:
select
和DML
查询创建一个过程。CallableStatement
从 java 调用它。ResultSet
s。无法捕获 DML 结果但可以发出另一个
select
找出表中的行是如何受到影响的。
_样品表和程序_:
_从 Java 调用过程_: