将数据插入SQLite

时间:2014-09-16 03:08:41

标签: c# sqlite

我尝试使用WPF创建数据库,并将数据插入表中。

我使用一个按钮在表格中插入4个不同的数据, 它工作正常,但我只能插入"一个"表中的数据, 无论我按下按钮多少次。

这是我的代码:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        SQLiteConnection sqlite_conn;
        SQLiteCommand sqlite_cmd;
        SQLiteDataReader sqlite_datareader;

        sqlite_conn = new SQLiteConnection("Data Source=imageDB.db;Version=3;New=True;Compress=True;");
        sqlite_conn.Open();
        sqlite_cmd = sqlite_conn.CreateCommand();
        sqlite_cmd.CommandText = "CREATE TABLE image_table (id integer, name varchar(100), location varchar(500), appendix varchar(500));";
        sqlite_cmd.ExecuteNonQuery();

        string key = nowKey.ToString();
        string name = dbNameBox.Text;
        string location = dbLocationBox.Text;
        string app1 = dbNotebox.Text;

        sqlite_cmd.CommandText = "INSERT INTO image_table (id, name, location, appendix) VALUES ('" + nowKey.ToString() + "', '" + name + "', '" + location + "', '" + app1 + "');";

        sqlite_cmd.ExecuteNonQuery();

        sqlite_cmd.CommandText = "SELECT * FROM image_table";

        sqlite_datareader = sqlite_cmd.ExecuteReader();

        while (sqlite_datareader.Read())
        {
            string data = sqlite_datareader.GetString(3);
            MessageBox.Show(data);
        }

        sqlite_conn.Close();
    }

我没有使用"自动增量"这里是关键字,既不是"主键"。 我尝试过移动

sqlite_conn = new SQLiteConnection("Data Source=imageDB.db;Version=3;New=True;Compress=True;");

退出了该功能,但它仍然无法正常工作。

请给我建议!万分感激 提前谢谢!

2 个答案:

答案 0 :(得分:0)

在每次点击时,您都是从头开始创建表格。您应该创建一次表(可能在程序启动或另一个按钮单击,具体取决于您的需要),然后在同一个表中插入数据。

目前正在发生的事情是,当您点击按钮时,您的表格会再次被覆盖已覆盖的内容。

答案 1 :(得分:0)

您每次都要创建一个新表。 要解决此问题,请使用:CREATE TABLE IF NOT EXISTS

sqlite_cmd.CommandText = "CREATE TABLE IF NOT EXISTS image_table (id integer, name varchar(100), location varchar(500), appendix varchar(500));";
    sqlite_cmd.ExecuteNonQuery();