繁体   English   中英

应用程序停止后数据库不会保留数据 Visual Studio C#

[英]Database will not keep data after app stopped Visual Studio C#

希望有人可以帮助解决这个问题。 以下代码旨在向表中添加条目; 然而,虽然数据是在运行时添加的,但当应用程序关闭时,它就会消失。 数据库设置为“如果较新则复制”。

   private void AddToNameList()
        {
            SqlConnection con = new SqlConnection(connectionString);

            cmd = new SqlCommand("INSERT INTO NameSurname VALUES (@NameId, @Surname)", con);
     
            cmd.Parameters.AddWithValue("@NameId", textBox2.Text);

            cmd.Parameters.AddWithValue("@Surname", textBox3.Text);
            con.Open();
            int i= cmd.ExecuteNonQuery();
            con.Close();
            if (i != 0)
            {
                MessageBox.Show(i + "Data Saved");
            }
            textBox2.Clear();
            textBox3.Clear();

        }

         private void button1_Click(object sender, EventArgs e)
        {
            if(textBox2.Text!= ("") && textBox3.Text!=(""))
            {
                AddToNameList();
            }
            else
            {
                MessageBox.Show("Please enter Name and Surname","Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

消息框确认数据已保存,当我进行搜索时,它就在那里。 但是,当我停止应用程序运行并检查数据库时,数据不存在。

感谢任何帮助。

谢谢

如果要读取 .mdf 文件,必须安装SQL Server ExpressSqlLocalDb runtime 并非所有其他用户都愿意下载和安装它们。

要将表保存到数据库中,我认为 SQLite 会是更好的选择。

希望以下步骤可以帮助到您。

首先,使用 NuGet 安装System.Data.SQLite

二、在App.config中配置连接字符串。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
  <connectionStrings>
     <add name="SQLiteDbContext" connectionString="Data Source=MyDatabase.sqlite" providerName="System.Data.SQLite.EF6" />
  </connectionStrings>
</configuration>

第三,您可以使用以下代码来创建/插入/读取数据库/数据表。

// create
SQLiteConnection.CreateFile("MyDatabase.sqlite");
SQLiteConnection con = new SQLiteConnection("Data Source=MyDatabase.sqlite");
con.Open();
string sql = "create table NameSurname (Nameid varchar(20), Surname varchar(20))";
SQLiteCommand command = new SQLiteCommand(sql, con);
command.ExecuteNonQuery();
// insert
SQLiteCommand cmd = new SQLiteCommand("INSERT INTO NameSurname VALUES (@NameId, @Surname)", con);
cmd.Parameters.AddWithValue("@NameId", textBox2.Text);
cmd.Parameters.AddWithValue("@Surname", textBox3.Text);
cmd.ExecuteNonQuery();
// read
SQLiteCommand sqlCom = new SQLiteCommand("Select * From NameSurname", con);
SQLiteDataReader sqlDataReader = sqlCom.ExecuteReader();
int i = 1;
while (sqlDataReader.Read())
{
    listBox1.Items.Add(i);
    listBox1.Items.Add(sqlDataReader.GetValue(0));
    listBox1.Items.Add(sqlDataReader.GetValue(1));
    i++;
}
con.Close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM