Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Access数据库未更新_C#_Database_Ms Access - Fatal编程技术网

C# Access数据库未更新

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

我正在尝试使用以下字符串连接连接到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 = "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并不特别,您必须从所有这些不受限制的日期中进行选择:)