level 1
Greentea围棋
楼主
有这么个代码:
public boolean createTable(String tableName)
{
try
{
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:db_myBooks.db", null, null);
PreparedStatement pstmt = conn.prepareStatement("create table ? (id integer primary key autoincrement,name varchar)");
pstmt.setString(1, tableName);
pstmt.executeUpdate();
return true;
}catch (SQLException | ClassNotFoundException e)
{
e.printStackTrace();
return false;
}
运行后抛这个异常:
[SQLITE_ERROR] SQL error or missing database (near "?": syntax error)
at org.sqlite.DB.newSQLException(DB.java:886)
at org.sqlite.DB.newSQLException(DB.java:897)
at org.sqlite.DB.throwex(DB.java:864)
at org.sqlite.NativeDB.prepare(Native Method)
at org.sqlite.DB.prepare(DB.java:207)
at org.sqlite.PrepStmt.<init>(PrepStmt.java:50)
at org.sqlite.SQLiteConnection.prepareStatement(SQLiteConnection.java:616)
at org.sqlite.SQLiteConnection.prepareStatement(SQLiteConnection.java:606)
at org.sqlite.SQLiteConnection.prepareStatement(SQLiteConnection.java:578)
at manager.DataManager.createTable(DataManager.java:41)
at manager.ManagerCenter$1.doInBackground(ManagerCenter.java:43)
at manager.ManagerCenter$1.doInBackground(ManagerCenter.java:1)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
这是什么意思?难道预编译不能用在create table上吗
2014年01月10日 07点01分
1
public boolean createTable(String tableName)
{
try
{
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:db_myBooks.db", null, null);
PreparedStatement pstmt = conn.prepareStatement("create table ? (id integer primary key autoincrement,name varchar)");
pstmt.setString(1, tableName);
pstmt.executeUpdate();
return true;
}catch (SQLException | ClassNotFoundException e)
{
e.printStackTrace();
return false;
}
运行后抛这个异常:
[SQLITE_ERROR] SQL error or missing database (near "?": syntax error)
at org.sqlite.DB.newSQLException(DB.java:886)
at org.sqlite.DB.newSQLException(DB.java:897)
at org.sqlite.DB.throwex(DB.java:864)
at org.sqlite.NativeDB.prepare(Native Method)
at org.sqlite.DB.prepare(DB.java:207)
at org.sqlite.PrepStmt.<init>(PrepStmt.java:50)
at org.sqlite.SQLiteConnection.prepareStatement(SQLiteConnection.java:616)
at org.sqlite.SQLiteConnection.prepareStatement(SQLiteConnection.java:606)
at org.sqlite.SQLiteConnection.prepareStatement(SQLiteConnection.java:578)
at manager.DataManager.createTable(DataManager.java:41)
at manager.ManagerCenter$1.doInBackground(ManagerCenter.java:43)
at manager.ManagerCenter$1.doInBackground(ManagerCenter.java:1)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
这是什么意思?难道预编译不能用在create table上吗