2011-06-15 101 views
2

我試圖將數據插入到Microsoft Access數據庫。如何將數據插入Microsoft Access數據庫?

我將數據插入Access數據庫,但第一次和第二次是顯示我插入的數據的唯一次數。當我重建我的應用程序時,我插入的數據消失了。我不知道他們去哪裏,也不知道。我使用.NET框架開發C#。下面是代碼的相關部分:

OleDbConnection con = new OleDbConnection(ConfigurationManager.ConnectionStrings["Constr"].ConnectionString); 
OleDbCommand com = new OleDbCommand(); 
com.Connection = con; 
com.CommandText = "Insert into Language(English,Type,Thai) values(@eng,@type,@thai)"; 
com.Parameters.AddWithValue("@eng", english); 
com.Parameters.AddWithValue("@type", type); 
com.Parameters.AddWithValue("@thai", thai); 
con.Open(); 
com.ExecuteNonQuery(); 

我寫了那段代碼,但我覺得很奇怪。它不顯示任何錯誤或異常,但我的數據沒有正確插入。這是插入數據的正確方法嗎?如果是這樣,爲什麼它沒有被插入?

+0

您使用的是哪個版本的Access DB? – NoviceProgrammer 2011-06-15 06:24:55

+0

你說過:「當我重建我的應用程序時,我插入的數據消失了。」 - 但後來你說「我的數據沒有正確插入」 - 就是這樣 - 是插入的數據然後在重建時消失還是根本沒有插入? – 2011-06-15 09:51:34

回答

1

我認爲語言應該是一個保留字,你應該把它包裝在[]括號中。

還要考慮包裝在using塊中的代碼,例如

using (OleDbConnection con = new OleDbConnection(...)) 
{ 
    using (OleDbCommand com = new OleDbCommand(sqlString, con)) 
    { 
     //code 
    } 
} 

除此之外,我沒有看到任何錯誤的代碼[用表名和你不關閉你的連接可能問題] 。

+0

語言是一個保留字。我也想知道英語,類型和泰語變量的值。 – Fionnuala 2011-06-15 07:38:08

0

可能烏爾連接字符串不使用.udl文件 只需按照鏈接 http://www.gotknowhow.com/articles/test-a-database-connection-string-using-notepad

糾正,您可以在

您還可以查看圖所示

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\ruby\\Desktop\\screenShots\\ruby.mdb;Persist Security Info=False"); 
     con.Open(); 
     OleDbCommand cmd = new OleDbCommand("insert into raj(Name,Roll) values('XYZ',12);",con); 
     cmd.ExecuteNonQuery(); 
0

您的定義參數代碼查詢,但我沒有看到任何地方這些參數綁定到實際的數據...

嘗試一些簡單的測試,將您傳入的變量作爲參數與實際值val UE的,這樣你就可以找出問題所在:像這樣

com.Parameters.AddWithValue("@eng", english); 
com.Parameters.AddWithValue("@type", type); 
com.Parameters.AddWithValue("@thai", thai); 

的東西:

換句話說,更換此

//I don't know the data types of your fields, so I'm guessing 
com.Parameters.AddWithValue("@eng", "Test1"); 
com.Parameters.AddWithValue("@type", myEnum.Latin); 
com.Parameters.AddWithValue("@thai", "Test1a"); 

如果這樣的作品,那麼你的問題可能在於english,typethai變量,您將需要確保他們獲得您認爲應該得到的數據。

2

當我重建我的申請,我插入的數據都沒了

我懷疑,當應用程序重新構建你的數據庫被覆蓋。

例如,如果您的應用程序包含複製到build上的輸出目錄並從輸出目錄使用的MDB文件,則可能發生這種情況。