Java - String作为新的sql表名

时间:2016-12-05 17:16:30

标签: java sqlite

所以我试图创建新的SQLite表,其名称由我的应用程序中创建的String设置。字符串是从int userID和curret date(到string)

创建的
LocalDate date = LocalDate.now();

public void save()    {
    String db;
    db = String.valueOf("uid" + userID + date.toString());
    try {
        PreparedStatement pst = conn.prepareStatement("CREATE TABLE ?(name TEXT, kcal FLOAT, protein FLOAT, carbs FLOAT, fat FLOAT)");
        pst.setString(1, db);
        pst.executeUpdate();
    } catch (SQLException e)  {
        e.printStackTrace();
    }
}

Finnal字符串如下所示:uid02016-12-05

不幸的是,我得到了

  

org.sqlite.SQLiteException:[SQLITE_ERROR] SQL错误或缺少数据库(接近“?”:语法错误)

指向我的PreparedStatement的错误,我打赌'?'有问题,但如何以其他方式做到这一点?

1 个答案:

答案 0 :(得分:1)

你可以通过简单的字符串连接来实现。

String query = "CREATE TABLE " + db + " (name TEXT, kcal FLOAT, protein FLOAT, carbs FLOAT, fat FLOAT)";
PreparedStatement pst = conn.prepareStatement(query);

我认为PreparedStatement中的问号是参数而不是表名。