0

我有两个功能。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,可能会让我的生活更轻松。

我想这个问题被问过太多次了。

4

1 回答 1

1

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

在解决方案资源管理器中,找到您的数据库并指定Build Action = NoneCopy to Output Directory = Do not copy

截屏

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

相反,将数据库定位在其他地方(C:\Program Files (x86)\Common Files或其他位置)并连接到它。

您的项目可能还有其他问题,但这是一个让我大吃一惊的大问题。

于 2013-03-07T21:49:23.413 回答