连接类:
我用过这里 stm.execute
但我没有出错。我也用过 executeUpdate
但我也犯了个错误。
package com.company;
import java.sql.*;
class ConnectionClass {
private static Connection con = null;
private static Statement stm = null;
private static ConnectionClass connectionClass;
public void createConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "root");
}
catch (Exception e) {
e.printStackTrace();
}
}
public void createTable() {
String Table_Name = "BOOK";
try {
stm = con.createStatement();
DatabaseMetaData dbm = con.getMetaData();
ResultSet rs = dbm.getTables(null, null, Table_Name, null);
if (rs.next()) {
System.out.println("Table" + Table_Name + "Already created");
} else {
String sql = "CREATE TABLE" + Table_Name + "(ID VARCHAR(200), title VARCHAR(200),author varchar(100),publisher varchar(100)";
stm.executeLargeUpdate(sql);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public ConnectionClass() {
createConnection();
createTable();
}
}
主要等级:
在这里,我认为主要的班级工作正常。
package com.company;
public class Main {
public static void main(String[] args) throws Exception {
ConnectionClass connectionClass = new ConnectionClass();
}
}
2条答案
按热度按时间biswetbf1#
查询中有语法错误。当前sql查询:
已更正的sql查询:
(您要求mysql创建一个列
publisher
,但数据类型在哪里?只需指定数据类型就可以了。)编辑:
所以,最后结束这个问题,让我们看看ora docs对此有何看法:
executelargeupdate:执行器更新:
执行给定的sql语句,该语句可以是insert、update或delete语句,也可以是不返回任何内容的sql语句,例如SQLDDL语句。当返回的行计数可能超过integer.max\u值-
A constant holding the maximum value an int can have, 2^31-1
.note:this method 不能对preparedstatement或callablestatement调用。
默认实现将抛出unsupportedoperationexception。这种方法是从jdk1.8开始引入的
请注意上述文件中所述的要点。默认实现是抛出unsupportedoperationexception。这意味着不同的jdbc驱动程序可以有不同的
Statement
班级。它们可以实现它,也可以不实现它,如果在第二种情况下调用该方法,该方法将抛出UnsupportedOperationException
,如文件所述。通过检查oracle文档中的此方法,您可以获得有关它的更多信息。因此,可能是您使用的驱动程序版本不支持此方法,因此请更新到此驱动程序的最新版本并试用。
x7yiwoj42#
方法
executeLargeUpdate
是在Java8/JDBC4.2中添加的,从错误来看,它没有在您使用的mysql connector/j版本中实现。解决方法很简单:不要使用任何
Large
方法,而不是使用executeUpdate
,或者-在dml的情况下更好-execute
. 或者,更新到mysql connector/j的更新版本,如下所示executeLargeUpdate
在较新版本的mysql connector/j中实现(例如5.1.46,但至少是5.1.37(添加了支持的版本))。您还需要解决adil指出的语法错误。