You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#向SQL Server插入datetime数据时遇类型转换错误求助

问题分析与解决方案

错误原因

  • 表名不匹配:SQL语句中操作的表是tab_item,但实际存储销售记录的表是tab_venda,这会导致数据库无法找到对应字段,引发类型转换错误。
  • 参数拼写错误:SQL参数@codCleinte存在拼写错误,正确应为@codCliente,拼写不一致会导致参数无法正确绑定到字段。
  • 未指定插入字段列表:直接使用values而不明确指定目标字段,容易因参数顺序与表字段顺序不匹配引发类型错误,同时也不利于后续表结构维护。
  • 多余的类型转换:DateTime.Now本身就是DateTime类型,无需通过Convert.ToDateTime()转换,直接传入即可。

修正后的代码

cmd.Connection = conn.conectar();
// 明确指定插入的字段列表,避免顺序歧义
cmd.CommandText = "insert into tab_venda (cod_vendedor, cod_cliente, dta_venda, valor_total_venda, forma_pagamento) " +
    "values (@codVendedor, @codCliente, @datavenda, @valorTotalVenda, @formapgmt)";
cmd.Parameters.AddWithValue("@codVendedor", codVendedor);
cmd.Parameters.AddWithValue("@codCliente", codCliente);
// 直接传入当前时间,无需额外转换
cmd.Parameters.AddWithValue("@datavenda", DateTime.Now);
cmd.Parameters.AddWithValue("@valorTotalVenda", valortotalvenda);
cmd.Parameters.AddWithValue("@formapgmt", formadepagamento);
cmd.ExecuteNonQuery();
mensagemretorno = "Sucesso para gerar venda";

额外注意事项

确保codVendedor和codCliente的值在tab_pessoa表中存在,因为这两个字段是外键,引用tab_pessoa的id字段,若传入不存在的值会触发外键约束错误。

内容的提问来源于stack exchange,提问作者Luis Antonio Marcelino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:15:41