首页 文章

Java - String作为新的sql表名[duplicate]

提问于
浏览
0

这个问题在这里已有答案:

所以我试图创建新的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 回答

  • 1

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

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

    我相信PreparedStatement中的问号是参数而不是表名 .

相关问题