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



我正在使用.NET 4.0和Access 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();

我的访问数据库表中的列都是整数类型,还有一个称为" idtorneo"的自动启动列,这是主要键,我不包括在查询中(因为它是自动增量)。

但是,当我运行代码时,我不会遇到任何错误(我尝试将插入插入插入,然后看到执行的"尝试"位)。但是,当我检查表中的数据时,表为空。由于我没有错误,所以我很困惑,不知道从哪里开始寻找。我也尝试过这种方式插入,没有运气:

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);

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

OLEDBCOMMAND不完全支持名为参数。而是使用?

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

好吧,我找到了"错误",这只是我从未想过的配置问题。我在这里尝试了所有建议(谢谢!),我终于决定避免参数,以查看这是否是问题。所以我将查询转换为"INSERT INTO Torneo (cantParejas,dia,mes,anio,hora,minuto) VALUES ('" + cantidad + "','" + dia + "','" + mes + "','" + anio + "','" + hora + "','" + minuto + "')";并留下代码

OleDbConnection dbConnection = new OleDbConnection();
dbConnection.ConnectionString = strDeConexion;
dbConnection.Open();
OleDbCommand commandStatement = new OleDbCommand();
commandStatement.Connection = dbConnection;
commandStatement.CommandText = query;
commandStatement.ExecuteNonQuery();
dbConnection.Close();

但是,我仍然一无所获。在我转到解决方案资源管理器之前,选择了我的数据库,然后将属性"复制到输出目录"从"始终"更改为"不复制",然后转到输出目录(.... bin debug)和手动将我的数据库文件粘贴在其中。ta-da!现在,该数据库的副本正在更新中。

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

最新更新