我在使用INSERT INTO時遇到了麻煩,因為它的值來自另一個表,而一個值來自一個變數。
只使用MySQL,這個查詢作業得非常好:
INSERT INTO insumos_da_venda (vendacod, insumocod, nome, quantidade, unidmedida, preco) `
SELECT '11 AS vendacod
, 鱈魚
, 名稱
, 數量
, 單一的
,預售
FROM insumos_da_venda_temp
但是當我試圖在c#代碼中使用這個時,它把我放在'11'處的任何東西都轉化為'1'。
不管它是一個變數、一個隨機值,甚至是一個空白,當我執行命令時,它總是'1'
。這里是c#代碼:
string insertInsumosVenda = "INSERT INTO insumos_da_venda (vendacod, insumocod, nome, quantidade, unidmedida, preco)
SELECT '"/span> vendacod "' AS vendacod
, cod
, 名稱
, 數量
,單價
,價格
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,但還是不行。我看到了一些類似的問題,但沒有一個對我有用,我不知道為什么。
你應該使用引數化查詢。你的代碼很容易受到 SQL注入
我知道這段代碼寫得很差,我做這個程式只是為了學習,現在我只學習c#,之后我會提升我的MySQL技能,謝謝你的提示
vendacod列是int(5),但我也試過把它改為varchar 但還是不行--我不太相信C#不能處理顯示格式。 顯示格式,而且我也不相信把它變成varchar 我不相信把它變成varchar會失敗(除非它是varchar(1),而你沒有得到一個 截斷錯誤?) - 你能不能展示一些截圖,說明它 "不作業 "的情況?在截圖的時候,我剛剛意識到一件事:它并不總是'1',它得到的是 "insumos_da_venda_temp "第一列的值,這甚至不在代碼中,所以我不知道發生了什么
。這里有一些螢屏截圖。 https://imgur.com/a/1iaHrj2
uj5u.com熱心網友回復:
我真的不知道為什么你會有這樣的問題,但你可以嘗試使用MySqlParameter。 你可以在這里閱讀更多關于它的資訊。https://dev.mysql.com/doc/dev/connector-net/8.0/html/P_MySql_Data_MySqlClient_MySqlCommand_Parameters.htm。
無論如何,實作方式將是這樣的:
MySqlParameter p1= new MySqlParameter("@vendacod",vendacod)。
string insertInsumosVenda = "INSERT INTO insumos_da_venda (vendacod, insumocod, nome, quantidade, unidmedida, preco)
SELECT @vendacod AS vendacod
, cod
, 名稱
, 數量
, unidmedida
, 價值
FROM insumos_da_venda_temp;"。
MySqlCommand insertInsumosVendaCmd = new MySqlCommand(insertInsumosVenda, BDconnection)。
insertInsumosVendaCmd.Parameters.Add(p1)。
reader = insertInsumosVendaCmd.ExecuteReader();
while (reader.Read()) { }
reader.Close()。
uj5u.com熱心網友回復:
你試圖將vendacod作為一個字串插入,但它是一個整數列( int(5) )。嘗試添加 vendacod 作為一個整數引數
。string insertInsumosVenda = "INSERT INTO insumos_da_venda ( vendacod, insumocod, nome, quantidade, unidmedida, preco )
SELECT @vendacod AS vendacod
, cod
, 名稱
, 數量
, unidmedida
, 價值
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()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331780.html
標籤:
