1

したがって、私のエラーは次のとおりです。テーブルchang9はすでに存在します。

私はグーグルで検索しましたが、人々はあなたがそれを実行した後にテーブルをドロップすると言いました。

 sqlite_cmd.CommandText = " DROP Table 'chang9'";

多分それには構文の問題がありますか?しかし、ここに私の完全なコードがあります:(注: ドロップ テーブル セクションはコードの最後にあります)

 private void button4_Click(object sender, EventArgs e)
    {
        // We use these three SQLite objects:
        SQLiteConnection sqlite_conn;
        SQLiteCommand sqlite_cmd;

        // create a new database connection: // Maybe error here - video was different
        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 chang9 (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_cmd.CommandText = "INSERT INTO chang9 (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 < 500 ; 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();

        }

        sqlite_cmd.CommandText = " DROP Table 'chang9'";
        sqlite_conn.Close();

    }
4

3 に答える 3

4

テキストを drop table ステートメントに設定した後、コマンドを実行していません。

sqlite_cmd.CommandText = " DROP Table 'chang9'";
sqlite_conn.Close();

そのため、テーブルが削除されることはありません。メソッドを再度実行しようとすると、テーブルが既に存在し、表示されているエラーが発生します。sqlite_cmd.ExecuteNonQuery();テーブルを削除するには、コマンド テキストを設定した後に次のような行を追加する必要があります。

sqlite_cmd.CommandText = " DROP Table 'chang9'";
sqlite_conn.Close();
sqlite_cmd.ExecuteNonQuery();
于 2013-11-01T18:13:41.497 に答える
2

あなたの問題はここにあります:

sqlite_cmd.CommandText = "CREATE TABLE chang9 (Seq text, Field text, Desc text, Len text, Dec text, Typ text, Percnt text, Pop text, Alzero text, MaxLen text );";

テーブルを作成するとき、それはすでに存在するため、再度作成することはできません。

このコードを開始するとき、テーブルは存在しないと想定しますが、既に存在しています。

于 2013-11-01T17:51:37.017 に答える
1

以下のコマンドを使用

drop table if exists Table_Name
于 2013-11-01T17:52:04.870 に答える