2013-04-21 51 views
0

我對數據庫和C#的世界是比較新的,我有一個問題讓我的數據表根據我通過C#程序進行更新而更新。我正在使用TableAdapter向數據庫發出命令。在C#中的數據表不工作的更新命令

在我的程序中,我有一個允許將新行添加到數據表的表單。據我所知,這可以工作,因爲我的程序的其餘部分可以通過查詢數據庫來訪問新信息。

this.patientInfoTableTableAdapter.InsertNewPatient(
       this.FirstName, this.LastName, this.StreetAddress, this.City, this.State, this.Zip, 
       this.Email, this.Phone, this.DOB, this.Gender); 

我甚至可以停止程序的運行,並重新啓動它,並且添加的數據仍然可以訪問。但是,當我直接查看數據表時,添加的行不存在,下次運行程序時,表格在程序眼中也恢復爲未修改狀態。

我有,我用我每次去經歷這個過程時間的更新方法,但它有,無論是在保留添加的行或現有行的任何變化沒有影響:

this.Validate(); 
    this.patientInfoTableBindingSource.EndEdit(); 
    this.tableAdapterManager.UpdateAll(this.eMRSDatabaseDataSet); 
    MessageBox.Show("Update Successful"); 

我總是看到MessageBox出現,我沒有得到任何錯誤。

我得出的結論是,我的數據庫的一些設置或屬性是錯誤的,我可以用一些幫助來找出我的問題。

萬一有幫助,對所涉及的代碼後續的數據庫查詢:

INSERT INTO [PatientInfoTable] ([First_Name], [Last_Name], [Street_Address], [City], [State], [Zip], [Email], [Phone], [DOB], [Gender]) VALUES (@fName, @lName, @sAddress, @city, @state, @zip, @email, @phone, @dob, @gender) 

UPDATE  PatientInfoTable 
    SET    Street_Address = @saddress, City = @city, State = @state, Zip = @zip, Email = @email, Phone = @phone, Gender = @gender 
    WHERE  (Patient_ID = @p11) 

使用Visual Studio查詢構建器中生成這些查詢。

我將不勝感激任何建議!

回答

-1
query = "Update mcm_class Set class_status='" + 
dgv.Rows[i].Cells[1].ToString() + "' where class_id ='" + 
dgv.Rows[i].Cells[0].ToString() + "'"+ "AND"+" med_id='" + 
lst_med.SelectedValue.ToString() + "'"; 
cmd = new SqlCommand(query, con); 
con.Open(); 
cmd.ExecuteNonQuery(); 
con.Close(); 
+0

由於(主要)沒有使用[parameters](http://weblogs.sqlteam.com/dang/archive/2008/02/18/Why-Parameters-are-a-Best-Practice。 aspx),但字符串連接,這是一個不幸的常見壞習慣,可能會導致您在現實生活中遇到嚴重問題。 – 2013-06-23 12:46:10