访问不会保存输入

时间:2015-10-03 20:14:15

标签: c# ms-access-2010

我看了Yt,谷歌等。我尝试了5个解决方案而没有。我把txt放到文本框中,它显示在列表框中但是没有去访问。

简而言之。

 private void addAF_Click(object sender, EventArgs e)
    {


         if (aFInput.Text != "") {

            string q = "insert into AFs (AFNumber,SendDate,Notes) values ('"+aFInput.Text.ToString()+"','"+DateTime.Now+"', '"+notes.Text.ToString()+"')";
            dosomemagic(q);
            aFInput.Text = null;

        }

    }
    private void dosomemagic(String q)
    {

        try
        {
            cnn.Open();
            cmd.CommandText = q;
            cmd.ExecuteNonQuery();
            cnn.Close();
            loaddata();
        }
        catch (Exception e)
        {
            cnn.Close();
            MessageBox.Show(e.Message.ToString());
        }
    }

    private void ANLPA_Load(object sender, EventArgs e)
    {

        cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AFdbB03.mdb;";
        cmd.Connection = cnn;
        loaddata();
    }

    private void loaddata()
    {
        AFList.Items.Clear();
        try
        {
            string q = "select * from AFs";
            cmd.CommandText = q;
            cnn.Open();
            dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    AFList.Items.Add(dr[1].ToString());
                    keyList.Items.Add(dr[0].ToString());

                }
            }
            dr.Close();
            cnn.Close();
        }
        catch (Exception ex) 
        {
            cnn.Close();
            MessageBox.Show(ex.Message.ToString());
        }
    }

1 个答案:

答案 0 :(得分:0)

当您的应用运行时,它会从文件夹BIN\DEBUG运行,并在启动调试会话时将您的记录添加到Visual Studio中复制到该文件夹​​中的数据库中。如果您的文件的属性Copy to Output Directory设置为Copy Always,则每次启动调试会话时,Visual Studio都会将MDB文件从项目文件夹复制到输出目录(BIN \ DEBUG或x86变体)< / p>

通过这种方式,您的代码可以正确写入,但在下次运行时,您的数据会消失,因为该文件已被Visual Studio替换

将属性Copy To Output directory设置为Copy NeverCopy if Newer

作为旁注,请花点时间学习如何使用parameterized query。您的代码实际上有效,但如果您的备注文本框在其Text属性中包含单引号会发生什么?代码将因语法错误而崩溃。但这是你问题的一个小问题。有一种名为Sql Injection的知名黑客技术可以破坏数据库中的数据。