我在编译器警告方面有点挣扎。代码如下:
const char *sql;
switch (fromVersion) {
case 0:
{
sql = "ALTER TABLE abiliator_options ADD COLUMN new_column00 TEXT NOT NULL DEFAULT 'migrated from version 0'";
}
case 1:
{
sql = "ALTER TABLE abiliator_options ADD COLUMN new_column01 TEXT NOT NULL DEFAULT 'migrated from version 1'";
}
case 2:
{
sql = "ALTER TABLE abiliator_options ADD COLUMN new_column02 TEXT NOT NULL DEFAULT 'migrated from version 2'";
}
case 3:
{
sql = "ALTER TABLE abiliator_options ADD COLUMN new_column03 TEXT NOT NULL DEFAULT 'migrated from version 3'";
}
case 4:
{
sql = "ALTER TABLE abiliator_options ADD COLUMN new_column04 TEXT NOT NULL DEFAULT 'migrated from version 4'";
}
case 5:
{
sql = "ALTER TABLE abiliator_options ADD COLUMN new_column05 TEXT NOT NULL DEFAULT 'migrated from version 5'";
}
}
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK)
{
if (sqlite3_step(selectstmt) == SQLITE_DONE)
{
NSLog(@"Alter statement successful");
[self setDatabaseSchemaVersion];
}
else {
NSLog(@"Failed to alter the table with message '%s'.", sqlite3_errmsg(database));
}
}
else {
NSLog(@"Failed to prepare the statement with message '%s'.", sqlite3_errmsg(database));
}
sqlite3_finalize(selectstmt);
第一个警告是存储到'sql'的值永远不会被读取所有sql var赋值,除了交换机中的最后一个(案例5)。案例5不会导致警告。
第二个警告是函数调用参数是未初始化的值。这是为了 if(sqlite3_prepare_v2(database,sql,-1,& selectstmt,NULL)== SQLITE_OK) 言。
提前感谢您的提示。
答案 0 :(得分:4)
每个案件后你都错过了休息时间。只使用了最后一个作业。
答案 1 :(得分:2)
break;
个陈述。default:
编译器会告诉您,当您的fromVersion
为4时,case 4:
中分配给它的任何内容都会被case 5:
立即覆盖,因为没有break
1}}。它还告诉您,当fromVersion
为负数或超过5时,您的sql
未初始化。
答案 2 :(得分:2)
添加休息时间;每个案件后的陈述。 进一步尝试添加默认案例。
答案 3 :(得分:1)
切换语句结构: - 您缺少“break”和“default:”
切换(表达式)
{ case match1:
statements break; case match2: statements break; default: statements break;
}
答案 4 :(得分:0)
警告很可能是因为您没有在交换机中使用break;
(您正在设置旧值而不使用它们)。
switch (fromVersion) {
case 0:
{
sql = "ALTER TABLE abiliator_options ADD COLUMN new_column00 TEXT NOT NULL DEFAULT 'migrated from version 0'";
break;
}
case 1:
{
sql = "ALTER TABLE abiliator_options ADD COLUMN new_column01 TEXT NOT NULL DEFAULT 'migrated from version 1'";
break;
}
...