我有两个功能。插入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,可能会让我的生活更轻松。
我认为这个问题被问了太多次。
答案 0 :(得分:1)
对于初学者,请确保您的数据库不包含在项目构建中。
在解决方案资源管理器中,找到您的数据库并指定构建操作=无和复制到输出目录=不复制
您的数据库应位于bin
文件夹以外的文件夹中,否则每次启动项目时,都会将项目中的同一数据库复制到输出文件夹。
而是将数据库放在其他位置(C:\Program Files (x86)\Common Files
或其他位置)并连接到它。
你的项目可能还有其他问题,但这是一个很重要的问题。