91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 中是否支持 Like 和 ln 條件的參數(shù)化查詢 ?

admin
2024年11月23日 13:35 本文熱度 1188

咨詢區(qū)

  • Tom Ritter

.NET 中的參數(shù)化查詢我一直都像下面這樣寫。


SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID = @categoryid
"

   conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;

但我現(xiàn)在遇到了一個(gè)困難,參考如下代碼:


SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID IN (@categoryids) 
      OR  name LIKE '%@name%'
"

   conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.NVarChar);
comm.Parameters["@name"].Value = Name;

where條件中:

  1. CategoryIDs 是一個(gè)以逗號隔開的字符串 123,456,789 。

  2. Name 是一個(gè)字符串,也有可能是包含了特殊字符。

目前的參數(shù)化無法查詢,請問正確的語法如何寫?

回答區(qū)

  • Paul Turner

這里我逐一回答下你的問題。

1. CategoryIds

這里我假定 CategoryIds 是一個(gè) int 類型的數(shù)組,正確的做法是將 int 數(shù)組中的所有元素打散,然后逐一 參數(shù)化,比如可以在循環(huán)中構(gòu)建一個(gè) @p0 - @pN-1 的有序參數(shù),這里的 N 就是 CategoryIds 數(shù)組索引,然后逐一添加到 Command.Parameters 中。

2. Name

對 Name 的模糊匹配,應(yīng)該放在 Parameters 參數(shù)上,而不是 SQL 中。

參考如下代碼:


string Name = "someone";
int[] categoryIDs = new int[] { 2381138161516161617,
                                16181619162019511952,
                                19531954195519722022 };

SqlCommand comm = conn.CreateCommand();

string[] parameters = new string[categoryIDs.Length];

for(int i=0;i<categoryIDs.Length;i++)
{
   parameters[i] = "@p"+i;
   comm.Parameters.AddWithValue(parameters[i], categoryIDs[i]);
}
comm.Parameters.AddWithValue("@name",$"%{Name}%");
comm.CommandText = "SELECT * FROM Products WHERE Category_ID IN (";
comm.CommandText += string.Join(",", parameters) + ")";
comm.CommandText += " OR name LIKE @name";

點(diǎn)評區(qū)

這是初學(xué)者在用 sql 參數(shù)化查詢時(shí)經(jīng)常遇到的問題,有必要摘出來和大家分享下,如果有條件,建議看看 Dapper 的源碼,別人是如何處理此類場景的。


該文章在 2024/11/25 11:07:50 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 成人一区精品视频 | 欧美在线观看网址 | 91视频哪里看 | 欧美在线观看视 | 国产精品小视频网站 | 九九免费视频网站 | 欧美亚洲性爱综 | 日本中文字幕视频久 | 国产青青操 | 欧美亚洲日韩国产 | 国产伊人精品导航 | 国产精品16P| 日本强伦姧 | 国产情侣露脸 | 国产免费91| 日韩大片免费观看 | 国产精品福利导航 | 国产真实乱对白精彩 | 破了亲妺妺的处免费 | 国产97碰| 欧美中字日韩一区 | 午夜免费福利 | 日韩国产三区四区 | 强被迫伦姧在线观 | 日本国产网曝 | 欧美一级无毛视频 | 国产污视频网站 | 国产黑丝一区 | 欧美日韩国产剧情 | 91精品一区福利 | 精品香蕉伊思人在 | 日韩免费影院 | 绮炫影院| 国产传媒 | 动漫一区 | 欧洲视频中文字幕在 | 福利所第一导航 | 日本三级全黄 | 成人妇女免费 | 国产午夜在线app | 日韩男女性爱视频 |