我在这里使用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();
}
}
答案 0 :(得分:0)
您的查询中存在语法错误。您当前的SQL查询:
String sql = "CREATE TABLE" + Table_Name + "(ID VARCHAR(200), title VARCHAR(200),author varchar(100),publisher(100)";
更正了SQL查询:
String sql = "CREATE TABLE" + Table_Name + "(ID VARCHAR(200), title VARCHAR(200),author varchar(100),publisher varchar(100)";
(你要求mysql创建一个列publisher
,但是数据类型在哪里?只需指定数据类型就可以了。)
所以,最后结束这个问题,让我们来看看Ora Docs对此有何看法:
executeLargeUpdate:default long executeLargeUpdate(String sql) throws SQLException
执行给定的SQL语句,该语句可以是INSERT,UPDATE或DELETE语句,也可以是不返回任何内容的SQL语句,例如SQL DDL语句。
当返回的行数可能超过Integer.MAX_VALUE - A constant holding the maximum value an int can have, 2^31-1
时,应使用此方法。
注意:无法在PreparedStatement或CallableStatement上调用此方法。
默认实现将抛出UnsupportedOperationException。从JDK 1.8开始引入此方法
还要注意文档中所述的上述观点。默认实现是抛出UnsupportedOperationException。这意味着不同的JDBC驱动程序可以具有Statement
类的不同实现。他们可以实现它,也可以不实现它,如果你在第二种情况下调用该方法,该方法将抛出UnsupportedOperationException
,如文档中所述。
通过检查此method的oracle文档,您可以获得有关它的更多信息。因此可能是您使用的驱动程序版本不支持此方法,因此请更新此驱动程序的最新版本并进行试用。
答案 1 :(得分:0)
在Java 8 / JDBC 4.2中添加了方法executeLargeUpdate
,并通过在您使用的MySQL Connector / J版本中未实现的错误来判断。
解决方案很简单:不要使用API中的任何Large
方法,而是使用executeUpdate
,或者 - 更好地使用DML - execute
。或者,更新到较新版本的MySQL Connector / J,因为executeLargeUpdate
在较新版本的MySQL Connector / J中实现(例如5.1.46,但至少为5.1.37(添加了支持的版本))。
您还需要解决语法错误pointed out by Adil。