C#和Access 2007:插入&更新功能无法正常工作?

时间:2013-03-07 18:56:30

标签: c# ms-access-2007

我有两个功能。插入Soner Gönül提供的功能(谢谢),......

表名学生

数据库

     `Field Name    Data Type
     *StudentID Number
      StudentName   Text
      StudentCNIC   Text
      StudentDOB    Date/Time

* PK

using System.Data.OleDb; 

private void Form1_Load(object sender, EventArgs e)
    {

        myCon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data   Source=|DataDirectory|\Access_and_CSharp.accdb");
        this.studentsTableAdapter.Fill(this.access_and_CSharpDataSet.Students);
    }

插入功能

private void Insertbtn_Click(object sender, EventArgs e)
    {
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "INSERT INTO Students(StudentID, StudentName, StudentCNIC, StudentDOB) Values(@StudIDTxt, @StudNameTxt, @StudCNCITxt, @StudDOBTxt)";
        cmd.Parameters.AddWithValue("@StudIDTxt", StudIDTxt.Text);
        cmd.Parameters.AddWithValue("@StudNameTxt", StudNameTxt.Text);
        cmd.Parameters.AddWithValue("@StudCNCITxt", StudCNCITxt.Text);
        cmd.Parameters.AddWithValue("@StudDOBTxt", StudDOBTxt.Text);
        cmd.Connection=myCon;   
        myCon.Open();
        cmd.ExecuteNonQuery();
         myCon.Close();
    }

这是更新功能

private void Updatebtn_Click(object sender, EventArgs e)
    {
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "UPDATE [Students] set [StudentName] = ?, [StudentCNIC] = ?, [StudentDOB] = ? WHERE [StudentID] = ?";
        cmd.Parameters.AddWithValue("@StudIDTxt", StudIDTxt.Text);
        cmd.Parameters.AddWithValue("@StudNameTxt", StudNameTxt.Text);
        cmd.Parameters.AddWithValue("@StudCNCITxt", StudCNCITxt.Text);
        cmd.Parameters.AddWithValue("@StudDOBTxt", StudDOBTxt.Text);
        cmd.Connection = myCon;
        myCon.Open();
        int rowsAffected = cmd.ExecuteNonQuery();
        myCon.Close();
    }

问题1 - 当我使用插入功能时,我可以在前端看到新数据。但我无法在Access中看到新数据。其他时候,当我关闭应用程序并重新启动时,新记录不存在。如果我查看Access应用程序并关闭它然后打开VS2010应用程序新数据不存在。到底是怎么回事?

问题2 - 当我使用更新功能时,数据在第一次运行应用程序时仍会更新。当应用程序关闭并再次运行时,情况并非如此。我哪里出错了?

对于这两个问题,任何人都可以看到问题在哪里?

提前致谢

修改 更新说我正在寻找以下网站我出错了。 http://www.c-sharpcorner.com/uploadfile/e628d9/inserting-retrieving-records-from-ms-access-2007-using-odbc/

更新 我有Windows 7,MS Access 2007和VS 2010.我想知道这是不是问题。如果它是那么它可能不值得麻烦。我已经下载了AccessDatabaseEngine但它的32位所以我不知道?如果我使用SQL Server而不是Access,可能会让我的生活更轻松。

我认为这个问题被问了太多次。

1 个答案:

答案 0 :(得分:1)

对于初学者,请确保您的数据库不包含在项目构建中。

在解决方案资源管理器中,找到您的数据库并指定构建操作=无复制到输出目录=不复制

screenshot

您的数据库应位于bin文件夹以外的文件夹中,否则每次启动项目时,都会将项目中的同一数据库复制到输出文件夹。

而是将数据库放在其他位置(C:\Program Files (x86)\Common Files或其他位置)并连接到它。

你的项目可能还有其他问题,但这是一个很重要的问题。