C#插入访问数据库:没有错误,命令成功,但没有插入数据

时间:2015-05-07 22:25:14

标签: c# database ms-access

我在.Net 4.0和访问2002数据库(.mdb)中使用C#(在Visual Studio 2013上) 我试图插入的数据存储在这些变量中:

int cantidad = int.Parse(txtCantParejas.Text);
DateTime fechaActual = DateTime.Now;
int dia = fechaActual.Day;
int mes = fechaActual.Month;
int anio = fechaActual.Year;
int hora = fechaActual.Hour;
int minuto = fechaActual.Minute;

我已经构建了这个查询:

string query = "INSERT INTO Torneo (cantParejas,dia,mes,anio,hora,minuto)VALUES (@cantParejas,@dia,@mes,@anio,@hora,@minuto)";

我有一个存储在变量" strDeConexion"中的连接字符串(连接测试成功)。

所以我尝试将数据插入到我的表中:

OleDbConnection dbConnection = new OleDbConnection(strDeConexion);
OleDbCommand commandStatement = new OleDbCommand(query, dbConnection);
dbConnection.Open();
commandStatement.Parameters.Add("@cantParejas", OleDbType.Integer).Value = cantidad;
commandStatement.Parameters.Add("@dia", OleDbType.Integer).Value = dia;
commandStatement.Parameters.Add("@mes", OleDbType.Integer).Value = mes;
commandStatement.Parameters.Add("@anio", OleDbType.Integer).Value = anio;
commandStatement.Parameters.Add("@hora", OleDbType.Integer).Value = hora;
commandStatement.Parameters.Add("@minuto", OleDbType.Integer).Value = minuto;
commandStatement.ExecuteNonQuery();
dbConnection.Close();

我的Access数据库表中的列都是Integer类型,还有一个名为" idTorneo"的自动增量列。这是主键,我没有包含在我的查询中(因为它的自动增量)。

然而,当我运行我的代码时,我没有得到任何错误(我尝试将插入包装在try-catch中,我看到"尝试"位正在执行)。但是当我检查表格中的数据时,表格是空的。由于我没有错误,我很困惑,不知道从哪里开始寻找。 我尝试插入这种方式,没有运气:

commandStatement.CommandType = CommandType.Text;
commandStatement.Parameters.AddWithValue("cantParejas", cantidad);
commandStatement.Parameters.AddWithValue("dia", dia);
commandStatement.Parameters.AddWithValue("mes", mes);
commandStatement.Parameters.AddWithValue("anio", anio);
commandStatement.Parameters.AddWithValue("hora", hora);
commandStatement.Parameters.AddWithValue("minuto", minuto);

对于可能出现的问题或如何调查此问题的任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:1)

OleDbCommand不完全支持命名参数。请改用?

 string query = "INSERT INTO Torneo (cantParejas,dia,mes,anio,hora,minuto) VALUES (?, ?, ?, ?, ?, ?)";

答案 1 :(得分:0)

好吧,我找到了" bug"这只是一个我从未想象过的配置问题。 我尝试了这里建议的一切(谢谢!!),我最终决定避免参数,看看是不是问题。所以我将查询转换为http://google.com/(JavaScript_Add-on) 并将代码保留为

"INSERT INTO Torneo (cantParejas,dia,mes,anio,hora,minuto) VALUES ('" + cantidad + "','" + dia + "','" + mes + "','" + anio + "','" + hora + "','" + minuto + "')";

然而,我仍然一无所获。在我访问我的解决方案资源管理器之前,选择了我的数据库并更改了属性"复制到输出目录"来自"永远复制" to"不要复制",然后转到输出目录(.... \ bin \ debug)并手动粘贴我的数据库文件。当当!现在,这个数据库副本正在更新。

我可以花一整天的时间调试,甚至不用考虑这个小技巧,所以我想把它发布在这里以防万一其他人有同样的问题。