![](/img/trans.png)
[英]SQLITE_ERROR SQL error or missing database (near “(”: syntax error)
[英]“[SQLITE_ERROR] SQL error or missing database (near ”DATABASE“: syntax error)”
我正在尝试使用JDBC在文件夹D:\\ sqlite中创建一个名为test的新数据库文件,如下所示:
import java.sql.*;
public class Class1 {
private static void createNewDataBase(){
String url = "jdbc:sqlite:D:sqlite/";
Connection conn = null;
Statement statement = null;
try{
conn = DriverManager.getConnection(url);
System.out.println("Connection Established");
statement = conn.createStatement();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
try {
statement.execute("CREATE DATABASE test");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally{
try{
if(statement != null)
statement.close();
}catch(SQLException e){
System.out.println(e.getMessage());
}
try{
if(conn != null)
conn.close();
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
}
public static void main(String[] args){
createNewDataBase();
}
}
运行项目时,将得到以下输出:
Connection Established
[SQLITE_ERROR] SQL error or missing database (near "DATABASE": syntax error)
Process finished with exit code 0
它说语法是错误的,但我找不到错误。 我一直在寻找类似问题的答案,但没有一个能解决我的问题。 谁能告诉我这是什么问题? 提前致谢!
数据库存在,它已经被连接,即数据库就是连接,基本上就是文件。 因此,没有用于CREATE DATABASE
SQL。
在数据库内部,通常会创建表(也许还有其他组件)。
例如CREATE TABLE mytable (mycolumn TEXT, myothercolumn INTEGER)
将创建一个名为mytable的表,该表包含2列mycolumn和myothercolumn (前者定义为TEXT的列类型,后者定义为INTEGER的列类型)。
因此,如果您要更改:-
statement.execute("CREATE DATABASE test");
至 :-
statement.execute("CREATE TABLE mytable (mycolumn TEXT, myothercolumn INTEGER)");
CREATE TABLE IF NOT EXISTS mytable (mycolumn TEXT, myothercolumn INTEGER)
,这取决于您的要求。 您可能会发现它会起作用。 显然,您将需要做其他事情,例如添加一些数据,因为表将为空。
也许然后尝试
statement.execute("INSERT INTO mytable VALUES('fred',100)");
每次运行时,都会将新的ROW添加到表名mytable中。
如@Andreas所述,SQLite没有CREATE DATABASE
SQL语句。 要创建一个新的SQLite数据库,您只需要建立一个连接并自动创建一个连接即可(但是,您需要确保本地文件系统中已经存在D:/ sqlite /路径)。
以下代码应在本地文件系统驱动器D的根目录下的sqlite文件夹中创建一个名为MyNewDatabase.sqlite的空 (无表)SQLite数据库:
String dbPath = "D:/sqlite/MyNewDatabase.sqlite";
Connection conn = null;
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:" + dbPath;);
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (SQLException ex) {
ex.printStackTrace();
}
finally {
try {
if (conn != null) {
conn.close();
}
}
catch (SQLException e) { e.printStackTrace(); }
}
现在,您需要为新数据库创建一个或多个表以使其有用。 SQLite确实接受CREATE TABLE
SQL语句,如果需要,您可以通过相同的连接来完成此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.