簡體   English   中英

帶有字符串的C#中的sql參數化查詢

[英]sql parameterized query in C# with string

com = new SqlCommand("SELECT pro_name from products where pro_name= @idP", con);
                SqlParameter param = new SqlParameter
                {
                    ParameterName = "@idP",
                    Value = proNames[i]
                };
                com.Parameters.Add(param);

它在整數類型下工作正常,但對於字符串不起作用,則給出錯誤

System.Data.SqlClient.SqlException: 'The parameterized query '(@idP nvarchar(4000))SELECT pro_name from products where pro_nam' expects the parameter '@idP', which was not supplied.'

嘗試傳遞適當的DBType 在您的情況下,這將是NVarChar

確保proNames[i]值為,而不為NullEmptyString

SqlParameter param = new SqlParameter()
{
    ParameterName = "@idP",
    SqlDbType = SqlDbType.NVarChar, // your DBType
    Value = proNames[i]
};

您也可以嘗試如下添加參數:

command.Parameters.AddWithValue("@idP", proNames[i]);

如果是VAR *類型,則應設置SqlDbType和Size。

 SqlParameter param = new SqlParameter()
 {
     ParameterName = "@idP",
     SqlDbType = SqlDbType.VarChar,
     Size = 4000,
     Value = proNames[i]
 };

順便說一句,如果您想傳遞NULL,則必須使用DbNull.Value而不是普通的C#NULL。

暫無
暫無

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

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