[問題] sqlparameter 問題
HI
我正在練習用 sql parameter 去組裝查詢條件
前一個程式有成功,條件頗複雜,但這個看似簡單的小程式一直沒有成功
想破頭找遍資料還是不行
還請高手幫忙解惑 .. @ @
部份程式碼如下:
strSql = @"
SELECT
CAST(LIFNR AS INT) as 供應商編號,
NAME1 as 名稱,
ORT01 as 城市,
PSTLZ as 郵遞區號,
STRAS as 地址,
TELF1 as 聯絡人,
TELFX as 電話,
ADR6.SMTP_ADDR as eMail
from prd.LFA1
left join prd.ADR6 on LFA1.ADRNR = ADR6.ADDRNUMBER ";
if (!string.IsNullOrEmpty(txtVendor.Text))
{
//cmd.CommandText = strSql + "WHERE NAME1 LIKE N'%"+
txtVendor.Text.Trim() + "%'"; // 這樣寫可以
cmd.CommandText = strSql + "WHERE NAME1 LIKE '%@prName%'";
cmd.Parameters.Add("@prName", SqlDbType.VarChar).Value =
txtVendor.Text.Trim(); // 這樣寫不行
cmd.Parameters.AddWithValue("@prName", txtVendor.Text.Trim());
//這樣寫一樣不行
}
else cmd.CommandText = strSql;
DataTable dtResult = tp.getData(cmd);
getData()部份就這樣而已
conn.Open();
dr = comm.ExecuteReader();
if (dr.HasRows) dt.Load(dr);
conn.Close();
return dt;
這段程式只要沒有 cmd.Parameters 那一段就一定可以成功取回所有資料
相反,有 cmd.Parameters 那一段就一定不行 (不行指的是沒有資料,空的)
我用這一段把 cmd 組裝的 sql
foreach (SqlParameter p in cmd.Parameters)
{
cmd.CommandText = cmd.CommandText.Replace(p.ParameterName,
p.Value.ToString());
}
Response.Write(cmd.CommandText);
還原如下
SELECT CAST(LIFNR AS INT) as 供應商編號, NAME1 as 名稱, ORT01 as 城市, PSTLZ
as 郵遞區號, STRAS as 地址, TELF1 as 聯絡人, TELFX as 電話, ADR6.SMTP_ADDR as
eMail from prd.LFA1 left join prd.ADR6 on LFA1.ADRNR = ADR6.ADDRNUMBER WHERE
NAME1 LIKE N'%泉%'
在 sql server management studio 中確定語法是對的... 但是搞不懂為什麼在 c#
組裝時就出問題 @ @
爬文本版 #1Mswq2pb 好像症狀很像?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.20.129.1
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1469005893.A.44E.html
※ 編輯: aeolus0829 (211.20.129.1), 07/20/2016 17:14:32
推
07/20 20:23, , 1F
07/20 20:23, 1F
→
07/20 20:37, , 2F
07/20 20:37, 2F
推
07/20 20:55, , 3F
07/20 20:55, 3F
→
07/21 08:45, , 4F
07/21 08:45, 4F
→
07/21 08:46, , 5F
07/21 08:46, 5F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章