我有两个功能。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,可能会让我的生活更轻松。
我想这个问题被问过太多次了。