我正在尝试让Java使用JDBC创建数据库,但是尽管查询正确,但还是出现语法错误。例如,如果我将数据库的名称明确地写入代码中,则可以正常工作。这是我的代码:
package mysql_manipulator;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class Create {
private static final String
driver = "com.mysql.jdbc.Driver",
url = "jdbc:mysql://localhost",
username = "dylan",
password = "******";
private String databaseName;
public Create (){
this.databaseName = null;
}
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
public void createDatabase(String databaseName){
try {
this.setDatabaseName(databaseName);
Class.forName(driver);
Connection con = DriverManager.getConnection(url,username,
password);
String query = "CREATE DATABASE ?";
PreparedStatement preparedStmt = con.prepareStatement(query);
preparedStmt.setString (1,this.getDatabaseName());
preparedStmt.execute();
preparedStmt.close();
con.close();
}
catch (Exception anException){
System.out.println("Error: " + anException);
}
}
}
我的主班
package mysql_manipulator;
public class Mysql_manipulator {
public static void main(String[] args) {
Create myObj = new Create();
myObj.createDatabase("whatevs");
}
}
错误
Error: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in
your SQL syntax; check the manual that corresponds to your MariaDB server version
for the right syntax to use near ''whatevs'' at line 1
非常感谢任何知道为什么此方法不起作用的人-我在网上搜索了无济于事。
您不能将数据库名称作为绑定变量-您必须将其嵌入查询文字中。将您的查询更改为此:
String query = "CREATE DATABASE " + getDatabaseName();
您也可以使用普通Statement
(而不是PreparedStatement
)来运行此SQL。
在截断表的函数中,我可以使用 我正在使用参数化的准备语句来选择、插入和更新,没有任何问题。
编译器在“t.createFromResultSet(rs,list);”上指示错误,该错误为“type CMObject中的方法createFromResultSet(ResultSet,ArrayList)不适用于参数(ResultSet,ArrayList)”。我想要做的是不可能的吗?
我很难找到正确的语法,我总是有错误#1064。 错误:#1064-您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,以了解使用near'的正确语法; 这就是代码; 定界符$$ 删除函数如果存在$$ 创建函数(iq INT, sq INT, ig INT)返回INT 开始 结束$$ 分隔符; 我在网上搜索答案,我找不到。我的语法有什么问题?
我们有一个db2 database V9.7FP1 出现此错误消息的可能原因是什么?
我试图使用以下JDBC语句将一些值插入到来自Java的Oracle DB中: 序列创建如下: 我得到以下错误, 但当我尝试手动插入到表中时,它是成功的。 有什么问题?