Java 没有这样的表Sqlite JDBC
伙计们。我面临的问题很奇怪。。 我首先创建一个表,然后尝试将数据放在表上,但不知什么原因,有些事情发生了。上面说Java 没有这样的表Sqlite JDBC,java,mysql,sqlite,jdbc,Java,Mysql,Sqlite,Jdbc,伙计们。我面临的问题很奇怪。。 我首先创建一个表,然后尝试将数据放在表上,但不知什么原因,有些事情发生了。上面说 [SQLITE_ERROR] SQL error or missing database (no such table: Name) aa这是我的基本代码 try{ Class.forName("org.sqlite.JDBC"); conni = DriverManager.getConnection("jdb
[SQLITE_ERROR] SQL error or missing database (no such table: Name)
aa这是我的基本代码
try{
Class.forName("org.sqlite.JDBC");
conni = DriverManager.getConnection("jdbc:sqlite://C://Users//Asus//Dropbox//TireShop.sqlite");
stmt = conni.createStatement();
String sql = "CREATE TABLE " + project.getText() + " (Id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , Name TEXT, One TEXT, Two TEXT)";
stmt.executeUpdate(sql);
stmt.close();
conni.close();
}catch (Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
try{
Class.forName("org.sqlite.JDBC");
conni = DriverManager.getConnection("jdbc:sqlite://C://Users//Asus//Dropbox//TireShop.sqlite");
String query1 = "insert into Name (Name) values(?)";
PreparedStatement pst = conni.prepareStatement(query1);
pst.setString(1, project.getText());
pst.execute();
pst.close();
conni.close();
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
try{
Class.forName("org.sqlite.JDBC");
conni = DriverManager.getConnection("jdbc:sqlite://C://Users//Asus//Dropbox//TireShop.sqlite");
String query1 = "insert into " + project.getText() + "(Name, One, Two) values(?,?,?)";
PreparedStatement pst = conni.prepareStatement(query1);
pst.setString(1, project.getText());
pst.setString(2, textField_one.getText());
pst.setString(3, textFieldtwo.getText());
pst.execute();
pst.close();
conni.close();
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
JOptionPane.showMessageDialog(null, "Thank you");
谢谢你的帮助!我真的能理解。。。我猜这个表根本没有被创建,但它实际上工作过一次。因此,我更加困惑o.o
名称
是一个。将该表重命名为其他名称。请用“
将字段名括起来以转义
String sql = "CREATE TABLE \"" + project.getText() + "\" (\"Id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , \"Name\" TEXT, \"One\" TEXT, \"Two\" TEXT)";
String query1 = "insert into \"Name\" (\"Name\") values(?)";
String query1 = "insert into \"" + project.getText() + "\" (\"Name\", \"One\", \"Two\") values(?,?,?)";
另外,我假设您已经从代码中的不同点将这些代码片段拼凑在一起
但我建议您在代码中设置一个单一的数据库连接,并在整个应用程序中重用该连接。
大致如下:
public class MyApp {
public static Connection DB;
public void initDatabase() {
try {
MyApp.DB = DriverManager.getConnection("jdbc:sqlite://C://Users//Asus//Dropbox//TireShop.sqlite");
}
catch(Exception ex) {
}
}
public static void main(String args[]) {
MyApp app = new MyApp();
app.initDatabase();
}
}
which是
project.getText()
的值?在代码中,您同时使用project.getText()
和字符串“Name”“.为什么?这确实帮了大忙,伙计。非常感谢。当然可以,因为您不再使用保留名称,但这只是一个很好的练习。正如您用制表符或空格标识代码一样,将括号放在相同的位置,您应该始终将字段名封装起来,无论数据库引擎如何。很好,这将有助于防止将来出现许多错误:-)