我有兩個功能。通過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