[英]Adding to a Database - C# with Access
下面是我用來連接到Access數據庫的代碼。 我正在嘗試插入數據(這是用戶填寫的表格)。 但是總是會捕獲異常,並且不會插入任何數據。
我仔細檢查了變量名是否存在拼寫錯誤,它們都是正確的。
private void addConfirm_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\hospitalApplication\HealthCare.accdb;Persist Security Info=False;";
String name = typedName.Text;
String addr = typedAddr.Text;
String DOB = typedDOB.Text;
String phone = typedPhone.Text;
String emergency = typedEmergency.Text;
String dateOfReg = typedDateReg.Text;
String patientstatus = typedStatus.Text;
String bedNo = typedBed.Text;
String blood = typedBlood.Text;
String visit = typedVisit.Text;
String diagnosis = typedDiagnosis.Text;
String doctorID = typedDoctor.Text;
OleDbCommand cmd = new OleDbCommand("INSERT into Patients (Full Name, Address,Date of Birth,Phone No,Emergency Contact,Date of Registration,Patient Status,bedID,Blood Type,Date of Visit,Diagnosis,doctorID) Values(@name, @addr,@DOB,@phone,@emergency,@dateOfReg,@patientstatus,@bedNo,@blood,@visit,@diagnosis,@doctorID)", conn);
cmd.Connection = conn;
conn.Open();
if (conn.State == ConnectionState.Open)
{
cmd.Parameters.Add("@name", OleDbType.VarChar).Value = name;
cmd.Parameters.Add("@addr", OleDbType.VarChar).Value = addr;
cmd.Parameters.Add("@DOB", OleDbType.VarChar).Value = DOB;
cmd.Parameters.Add("@phone", OleDbType.VarChar).Value = phone;
cmd.Parameters.Add("@emergency", OleDbType.VarChar).Value = emergency;
cmd.Parameters.Add("@dateOfReg", OleDbType.VarChar).Value = dateOfReg;
cmd.Parameters.Add("@patientstatus", OleDbType.VarChar).Value = patientstatus;
cmd.Parameters.Add("@bedNo", OleDbType.Integer).Value = bedNo;
cmd.Parameters.Add("@blood", OleDbType.VarChar).Value = blood;
cmd.Parameters.Add("@visit", OleDbType.VarChar).Value = visit;
cmd.Parameters.Add("@diagnosis", OleDbType.VarChar).Value = diagnosis;
cmd.Parameters.Add("@doctorID", OleDbType.Integer).Value = doctorID;
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Data Added");
conn.Close();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Source);
conn.Close();
}
}
else
{
MessageBox.Show("Connection Failed");
}
您的SQL無效。 這些空格使查詢解析器混亂。
最好的方法是不要在表/列名稱中使用空格。 但是,如果必須這樣做,則需要將它們括在方括號中,以告訴查詢解析器兩個單詞都標識一個項目。 像這樣:
INSERT into Patients ([Full Name], ...
對包含空格或保留字的任何表/列名稱執行此操作。 (如果需要,可以對所有表/列名稱執行此操作。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.