C# Access数据库未更新
我正在尝试使用以下字符串连接连接到access 2010数据库。但是,它不会对数据库进行任何更改C# Access数据库未更新,c#,database,ms-access,C#,Database,Ms Access,我正在尝试使用以下字符串连接连接到access 2010数据库。但是,它不会对数据库进行任何更改 OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=C:\\Program Files\\LogEntry\\LogEntry.accdb; Persist Security Info = False;"); conn.Open(); String text2send
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=C:\\Program Files\\LogEntry\\LogEntry.accdb; Persist Security Info = False;");
conn.Open();
String text2send = "INSERT INTO TLC(Name,Department,Position,VisitDate,InTime,OutTime,Purpose,HelpedBy,Campus,HelpCode) VALUES(" + name + "," + department + "," + position + "," + date + "," + hourIn + "," + hourOut + "," + purpose + "," + helpedBy + "," + campus + "," + helpcode + ");";
OleDbCommand cmd = new OleDbCommand(text2send,conn);
conn.Close();
编辑:
这是我用于参数查询的编辑代码
String name = nameTextbox.Text;
String department = departmentCBox.Text;
String purpose = purposeTextbox.Text;
String position = positionCBox.Text;
String date = inDate.Value.ToString("MM/dd/yyyy");
String helpCode = helpCodeCBox.Text;
String hourOut = ""+OutHour.Text+":"+OutMin+" "+OutMeredian;
String helpedBy= "";
String campus= "";
String helpcode= "";
String hourIn = "" + DateTime.Now.ToString("hh") + ":" +
DateTime.Now.ToString("mm") + " " + DateTime.Now.ToString("tt");
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=C:\\Program Files\\LogEntry\\LogEntry.accdb; Persist Security Info = False;");
conn.Open();
String text2send = "Insert Into TLC([Name],[Department],[Position],[VisitDate],[InTime],[OutTime],[Purpose],[HelpedBy],[Campus],[HelpCode]) VALUE(?,?,?,?,?,?,?,?,?,?);";
OleDbCommand cmd = new OleDbCommand(text2send,conn);
cmd.Parameters.AddWithValue("Name", name);
cmd.Parameters.AddWithValue("Department", department);
cmd.Parameters.AddWithValue("Position", position);
cmd.Parameters.AddWithValue("Purpose", purpose);
cmd.Parameters.AddWithValue("HelpedBy", helpedBy);
cmd.Parameters.AddWithValue("Campus", campus);
cmd.Parameters.AddWithValue("HelpCode", helpcode);
cmd.ExecuteNonQuery();
conn.Close();
添加
cmd.ExecuteNonQuery()
创建命令后,在关闭连接之前您永远不会执行该命令,请在命令崩溃之前将其更改为参数查询。乍一看,它应该是值(?
而不是值(?
类似地,MS Access很少喜欢空字符串helpedBy=“”;
您的参数计数与字段计数不匹配,且顺序不同。您必须对参数使用相同的数字和顺序。Mucker,感谢您的及时回复。我已经添加了这一点,现在在insert into语句中显示语法错误。这是否意味着数据库字段与我发送的文本不匹配?我假设Name
、Department
等都是字符串,但字符串变量周围不能有撇号,例如值(“+Name+”,“
。最好听从Remou的建议,使用参数化查询,因为如果将Conan O'Brien
作为名称传入,该查询仍将失效。名称可能是字符串,但也是保留字,因此[name]@Remou-是的,Name
是一个坏例子。@LittleBobbyTables并不特别,您必须从所有这些不受限制的日期中进行选择:)