c# - 一起使用 INSERT INTO SELECT & VALUES
问题描述
我在使用INSERT INTO
另一个表中的值和变量中的一个值时遇到问题。
仅使用 MySQL,此查询完美运行:
INSERT INTO insumos_da_venda (vendacod, insumocod, nome, quantidade, unidmedida, preco) `
SELECT '11' AS vendacod
, cod
, nome
, quantidade
, unidmedida
, preco
FROM insumos_da_venda_temp
但是当我尝试在 c# 代码中使用它时,它会将我放在“11”所在的任何内容转换为“1”。
不管它是变量、随机值还是空白,当我执行命令时它总是'1'
这是c#代码:
string insertInsumosVenda = "INSERT INTO insumos_da_venda (vendacod, insumocod, nome, quantidade, unidmedida, preco)
SELECT '" + vendacod + "' AS vendacod
, cod
, nome
, quantidade
, unidmedida
, preco
FROM insumos_da_venda_temp;";
MySqlCommand insertInsumosVendaCmd = new MySqlCommand(insertInsumosVenda, BDconnection);
reader = insertInsumosVendaCmd.ExecuteReader();
while (reader.Read()) { }
reader.Close();
这里,变量 'vendacod' 可以是 0 到 99999 之间的任何值
vendacod 列是 int(5) 但我也尝试将其更改为 varchar 但仍然无法正常工作。
我见过一些类似的问题,但没有一个对我有用,我不知道为什么。
编辑1:
您应该使用参数化查询。您的代码易受 SQL 注入攻击
我知道这是一个写得很糟糕的代码,我制作这个程序只是为了学习目的,现在我只是在学习 c#,之后我会升级我的 MySQL 技能,谢谢你的提示
vendacod 列是 int(5) 但我也尝试将其更改为 varchar 但仍然无法正常工作 - 不太相信 C# 无法处理显示格式化程序,我不太相信让它成为varchar 失败(除非它是 varchar(1) 并且您以某种方式没有收到截断错误?) - 您能否将它的一些屏幕截图显示为 varchar“不工作”?
在截屏时,我刚刚意识到:它并不总是“1”,它正在获取“insumos_da_venda_temp”第一列的值,这甚至不在代码中,所以我不知道发生了什么
这里有一些截图: https ://imgur.com/a/1iaHrj2
编辑2:
3天解决这个问题,我终于成功了。
我信任@CaiusJard,他说它应该可以工作,然后我决定找出它不工作的任何其他原因。
事实是,100% 是我的错误,我正在做的是:将所有内容从“insumos_da_venda_temp”选项卡中转移出来,然后尝试从那里插入“insumos_da_venda”选项卡,因为它什么都没有,我认为有些东西发疯了,它正在插入数据那甚至不在那里。
谢谢大家的回复,你们每个人都帮了我很多,不仅在这个问题上,还教我一些mysql
解决方案
您正在尝试将 vendacod 作为字符串插入,但它是一个整数列( int(5) )。尝试将 vendacod 添加为整数参数
string insertInsumosVenda = "INSERT INTO insumos_da_venda (vendacod, insumocod, nome, quantidade, unidmedida, preco)
SELECT @vendacod AS vendacod
, cod
, nome
, quantidade
, unidmedida
, preco
FROM insumos_da_venda_temp;";
var cmd = new MySqlCommand(insertInsumosVenda, BDconnection);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@vendacod", MySqlDbType.Int32).Value = vendacod;
cmd.conection.Open();
var result= cmd.ExecuteNonQuery();
cmd.connection.Close();
推荐阅读
- wpf - 如何从 Powershell 中的 WPF RichTextBox 保存 rtf 文件?
- c# - 如何在 C# Universal 中搜索
- javascript - 如何在 list.item 中获取按钮 onclick 的值
- java - 何时在 Java 中使用 Comparable[ ]?
- javascript - 如何更改 Stats.js 的大小?
- qt - 移动窗口无法正常工作
- react-native - Metro Bundler 在 react-native 目录中寻找 JS 文件
- reactjs - 预期一个赋值或函数调用,而是在使用 div 时在反应中看到一个表达式
- wordpress - Woocommece 类别和商店页面问题
- ios - 加载和刷新时间敏感数据的最佳实践