我有两个功能。通过Soner Gönül(感谢)提供插入功能,......C#和Access 2007:插入和更新功能无法正常工作?
表名学生
数据库
`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年和2010年VS我想知道,如果这就是问题所在。如果是的话,这可能不值得麻烦。我已经下载了AccessDatabaseEngine,但它的32位,所以我不知道?如果我使用SQL Server而不是Access,可能会使我的生活更轻松。
我觉得这个问题被问过太多次了。
您是否每次运行程序时都将数据库复制到数据目录中? – PhoenixReborn 2013-03-07 19:28:23
@PhoenixReborn - 这两个功能不应该这样做还是我不明白? – bucketblast 2013-03-07 19:31:30
否功能不应该也不会这样做。从你的描述中,听起来我觉得你每次运行你的程序时都有Visual Studio的设置来将你的数据库复制到你的数据目录中。所以看起来数据正在消失,实际上它只是一个新的副本。 – PhoenixReborn 2013-03-07 19:33:40