gpt4 book ai didi

java - 我想使用 Java 字符串数组循环在 SQLite 中创建多个表。编程不好?

转载 作者:行者123 更新时间:2023-12-01 11:08:59 25 4
gpt4 key购买 nike

我想在我的应用程序中创建一个 SQLite 数据库,但我没有执行 db.execSQL 的严格文本,而是这样:

@Override
public void onCreate(SQLiteDatabase db) {
CREATE_TABLE_QUERY = createCreateQuery(COL_APPLICATIONS);
db.execSQL(CREATE_TABLE_QUERY);
}


public static String createCreateQuery(String[] COLUMNS) {
String Query;
Query = "CREATE TABLE " + TABLE_NAME_APPLICATIONS + " (";
Query += COLUMNS[0] + " " + COLUMNS[1] + " PRIMARY KEY AUTOINCREMENT, ";
for(int i = 2; i < COLUMNS.length; i ++){
Query += COLUMNS[i] + " ";
i++;
Query += COLUMNS[i];
if(i < COLUMNS.length-1) {
Query += ", ";
}
Query += ")";
}

return Query;

}

显然我传入了一个静态字符串数组。

这是糟糕的编程吗?与

相比,它是否消耗了不必要的 RAM/处理量
Query = "CREATE TABLE APPLICATIONSTB (ID INTEGER..."

对于每个表?

此外,如果我将静态字符串数组传递到 createCreateQuery 中而不将静态放入该方法中,为什么会出现错误?

最佳答案

即时构建 SQL 语句就可以了。与实际运行语句所需的时间相比,构建语句所需的时间根本不算什么。

但是存在一些代码问题:

  • 不要在循环内附加 )
  • 变量和参数名称应采用驼峰命名法。
  • 不要使用String += String 构建String。使用StringBuilder

修改后的代码:

public static String buildCreateTable(String tableName, String ... columnsAndTypes) {
StringBuilder sql = new StringBuilder();
sql.append("CREATE TABLE ").append(tableName).append(" ( ")
.append(columnsAndTypes[0]).append(' ').append(columnsAndTypes[1]).append(" PRIMARY KEY AUTOINCREMENT");
for(int i = 2; i < columnsAndTypes.length; i+=2)
sql.append(", ").append(columnsAndTypes[i]).append(' ').append(columnsAndTypes[i + 1]);
sql.append(" )");
return sql.toString();
}

测试

System.out.println(buildCreateTable("MyTable", "MyId"  , "INTEGER",
"MyName", "TEXT",
"MyData", "BLOB"));

输出

CREATE TABLE MyTable ( MyId INTEGER PRIMARY KEY AUTOINCREMENT, MyName TEXT, MyData BLOB )

关于java - 我想使用 Java 字符串数组循环在 SQLite 中创建多个表。编程不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com