我对数据库和C#的世界相对较新,我在根据我通过C#程序所做的更改来更新数据表时遇到问题。我正在使用TableAdapter向数据库发出命令。
在我的程序中,我有一个表单,允许将新行添加到数据表中。据我所知,这是有效的,因为我的程序的其余部分可以通过查询数据库来访问新信息。
this.patientInfoTableTableAdapter.InsertNewPatient(
this.FirstName, this.LastName, this.StreetAddress, this.City, this.State, this.Zip,
this.Email, this.Phone, this.DOB, this.Gender);
我甚至可以停止程序的运行并重新启动它,并且仍然可以访问添加的数据。但是,当我直接查看数据表时,添加的行不存在,下次运行程序时,表也恢复到程序眼中的未修改状态。
我确实有一个每次运行此过程时都使用的Update方法,但它对保留添加的行或对现有行的任何更改都没有影响:
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查询构建器生成的。
我非常感谢任何建议!
答案 0 :(得分:-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();