我刚开始在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;
}
}
}
我现在绝望了,请帮助我! :(
答案 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文件,查看内部内容,并使用您的数据。希望它有所帮助:)