簡體   English   中英

在 C# 中將 SQL 查詢參數設置為 Int32

[英]Setting SQL query parameter to Int32 in C#

我在嘗試編寫一些代碼時遇到了問題。 我正在為供應商訂單做一些事情,所以我有一個名為“encomendas_fornecedores”的表,在鍵之前有一個自動增量字段,該字段是銷售代碼,它包含在數字(這是一個文本字段)之前的 EF 中。

這是代碼:

connection.Open();

        OleDbCommand comando1 = new OleDbCommand();
        OleDbCommand comando2 = new OleDbCommand();
        OleDbCommand comando3 = new OleDbCommand();
        comando1.Connection = connection;
        comando2.Connection = connection;
        comando3.Connection = connection;
        comando1.CommandText = "INSERT INTO encomendas_fornecedores (cod_encomenda_forn, cod_metodo, cod_forn, total_pagar_forn) VALUES('FO', '" + txtcodmetodo.Text + "', '" + txtcodforn.Text + "', '" + lbltotalapagar.Text + "'); ";// insert into table the values with a FO to cod
        comando1.ExecuteNonQuery();
        comando2.CommandText = "Select MAX(num_encomenda) From encomendas_fornecedores;";// selecting maximum num encomenda so I can isolate it and add to a text before(btw I do this in php/sql no problems
       int  numero = Convert.ToInt32(comando2.ExecuteScalar());//max num_encomenda
        string codencomendaforn= "EF"+Convert.ToString(numero);// sales code completed
        comando3.CommandText = "UPDATE encomendas_fornecedores SET cod_encomenda_forn = '"+codencomendaforn+"' WHERE num_encomenda = '"+ numero +"';";//query that is giving me the problems, it says something like "type of data incorrect in data expression"
        comando3.ExecuteScalar();//giving me error this line

        connection.Close();

但是現在這里的問題是 cod_encomenda_forn 是文本,而 num_encomenda 自動遞增,就像它在 sql 中一樣,我嘗試在文本框中顯示查詢以查看它是否有任何問題,但似乎沒有任何問題。

"UPDATE encomendas_fornecedores SET cod_encomenda_forn = '"+codencomendaforn+"' WHERE num_encomenda = **'**"+ **numero** +"**'**;";//query that is giving me the problems,it says something like "type of data incorrect in data expression"

您正在將一個字符串numero傳遞給一個似乎需要一個numero的 where 語句。 只要它是數字,它就應該可以工作,但絕對不能保證工作。 其次,您將另一個codencomendaforn字符串傳遞給encomenda什么是encomenda的數據類型?

您似乎沒有處理 c# 代碼和 SQL 查詢之間潛在的數據類型差異。 此外,在 SQL 語句中的值周圍用單引號 '' 告訴數據庫引擎它是一個字符串,即使它是 '1234'。 雖然 SQL 會自動轉換某些值,但並非總是如此。 此外,c# .net 庫在發送 SQL 語句之前還會查找一些轉換等。 要適當地修復使用數據類型為 SQL 表中的數據庫類型的參數。 要在語句中簡單地修復它,找出您的數據類型並適當地修復 '' 單引號。

PS,那些試圖在評論中幫助你的人很好,並告訴你在解決這個問題后畢業時保持工作的專業方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM