我的Sqlite表应该有50行。当我第一次运行程序,并通过firefox查看器检查表时,我看到50行(应该是这样)。
当我第二次运行程序并检查表时,它的行加倍 - 我现在有100行。 (这是问题)
我已经建议使用DELETE,但我不想删除该表,因为我想在运行程序进行调试之后在firefox查看器中看到它。
// We use these three SQLite objects:
SQLiteConnection sqlite_conn;
SQLiteCommand sqlite_cmd;
// create a new database connection:
sqlite_conn = new SQLiteConnection(@"Data Source=database.db;Version=3;");
// open the connection:
sqlite_conn.Open();
// create a new SQL command:
sqlite_cmd = sqlite_conn.CreateCommand();
// Let the SQLiteCommand object know our SQL-Query:
sqlite_cmd.CommandText = "CREATE TABLE IF NOT EXISTS 'tab1' (Seq text, Field text, Desc text, Len text, Dec text, Typ text, Percnt text, Pop text, Alzero text, MaxLen text );";
// Now lets execute the SQL
sqlite_cmd.ExecuteNonQuery();
// **** SQLITE TRANSFER SECTION 1 - transfer values from list to table *****
sqlite_cmd.CommandText = "INSERT INTO tab1 (Seq, Field, Desc, Len, Dec, Typ, Percnt, Pop, Alzero, MaxLen) VALUES (@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10)";
sqlite_cmd.Parameters.AddWithValue("@p1", 6); // dummy initial values
sqlite_cmd.Parameters.AddWithValue("@p2", 878);
sqlite_cmd.Parameters.AddWithValue("@p3", 56);
sqlite_cmd.Parameters.AddWithValue("@p4", 6);
sqlite_cmd.Parameters.AddWithValue("@p5", 546);
sqlite_cmd.Parameters.AddWithValue("@p6", 565);
sqlite_cmd.Parameters.AddWithValue("@p7", 568);
sqlite_cmd.Parameters.AddWithValue("@p8", 526);
sqlite_cmd.Parameters.AddWithValue("@p9", 586);
sqlite_cmd.Parameters.AddWithValue("@p10", 526);
for (int i = 0; i < NumListValues; i += 10) // Filling SQlite table rows and columns with values from our list
{
sqlite_cmd.Parameters.AddWithValue("@p1", list[i]);
sqlite_cmd.Parameters.AddWithValue("@p2", list[i+1]);
sqlite_cmd.Parameters.AddWithValue("@p3", list[i+2]);
sqlite_cmd.Parameters.AddWithValue("@p4", list[i+3]);
sqlite_cmd.Parameters.AddWithValue("@p5", list[i+4]);
if (i > 490)
break;
sqlite_cmd.Parameters.AddWithValue("@p6", list[i+5]);
sqlite_cmd.Parameters.AddWithValue("@p7", list[i+6]);
sqlite_cmd.Parameters.AddWithValue("@p8", list[i+7]);
sqlite_cmd.Parameters.AddWithValue("@p9", list[i+8]);
sqlite_cmd.Parameters.AddWithValue("@p10", list[i+9]);
sqlite_cmd.ExecuteNonQuery();
}
答案 0 :(得分:1)
您的脚本在您第一次调用它时创建表,并插入记录。
第二次调用它时,您没有重新创建表,因为您使用了CREATE TABLE IF NOT EXISTS
子句。但是,你仍然在桌面上插入记录!
如果您第三次调用脚本,则会有150行。
答案 1 :(得分:1)
当我第二次运行程序并检查表时,它的行是双倍的 - 我现在有100行。
是的,它会的。您已经说过创建表如果它不存在,然后您插入一堆数据,而不删除已存在的那些。
每次实际上它不会加倍 - 每次运行它时只会添加NumListValues / 10
行,因为这就是你所说的你想要做的事情。
如果要在开始插入之前删除表中的任何现有行(即在运行的 start 而不是在结尾处),那么您需要明确地这样做。您可以使用TRUNCATE TABLE
或DELETE FROM ...
。