C#:插入到SQLite数据库中的内容消失了

时间:2014-09-01 13:11:34

标签: c# sql xml sqlite

我刚开始在c#中使用sqlite,它简单易用,但后来我意识到在重置应用程序后保存的数据将会消失。

所以我试图找到一种方法将数据存储在某种文件中。

XML派上用场了,因为还有一个函数已经用于向/从数据库写入/读取xml。

所有这一切都很好,没有任何问题。

我启动应用程序,最后一次存储到数据库中的所有数据仍在那里!

现在我尝试将一些新数据附加到数据库中,它可以正常工作,但现在我数据库中存储的所有数据都已消失,除了新行......

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        datenbankDataSet.ReadXml(@"C:\Users\ekehr\Desktop\newXML.xml");

        datenbankDataSet.AcceptChanges();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // TODO: Diese Codezeile lädt Daten in die Tabelle "datenbankDataSet.Table". Sie können sie bei Bedarf verschieben oder entfernen.
        this.tableTableAdapter.Fill(this.datenbankDataSet.Table);
        SqlConnection cn = new SqlConnection(global::SQL_ENTRY.Properties.Settings.Default.DatenbankConnectionString);
        try
        {
            string sql = "INSERT INTO [Table] (Id, name) VALUES("+textBox1.Text+", '"+textBox2.Text+"')";
            Console.WriteLine(sql);
            SqlCommand exeSQL = new SqlCommand(sql, cn);
            cn.Open();
            exeSQL.ExecuteNonQuery();
            this.tableTableAdapter.Fill(this.datenbankDataSet.Table);
            cn.Close();
            MessageBox.Show("NEUER EINTRAG!","INFO");
            datenbankDataSet.AcceptChanges();
            datenbankDataSet.WriteXml(@"C:\Users\ekehr\Desktop\newXML.xml");
        }
        catch (Exception)
        {

            throw;
        }
    }
}

我现在绝望了,请帮助我! :(

2 个答案:

答案 0 :(得分:0)

为什么每次查询数据库时都插入id,可能是这个问题。这可以替换具有相同id的旧数据。

答案 1 :(得分:0)

你的意思是你的所有数据都将消失?

Sqlite只是一个文件数据库。它就像一个SQL DB,但它不是运行SQL服务等,而是将数据本地存储在一个文件中(通常带有.sqlite扩展名,但这并不重要),然后你可以随意移动。

此外,它是免费的。我们喜欢免费。

话虽如此,如果您只是嘲笑数据并希望保存它,您可以随时将其写入/附加到文件中。例如:

var path = @"C:\test.txt";  // Where to save to

// Lets assume this is your input
var lines = new string[] {"one line", "two line", "three line", "party"};

// This will simply write them all to the file
System.IO.File.WriteAllLines(path, lines);

// This will append them  to the file
System.IO.File.AppendAllLines(path, lines);

// And then you can read it back
var loaded_from_file = System.IO.File.ReadAllLines

根据评论,我仍然不确定为什么要用XML数据填充sqlite数据库,但不管怎样,下载sqliteadimn。它是sqlite的数据库查看器,它可以让您轻松打开sqlite文件,查看内部内容,并使用您的数据。希望它有所帮助:)