[英]I would like to create multiple tables in SQLite using Java String Array Loop. Bad programming?
我想在我的應用程序中創建一個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 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.