[問題] sqlparameter 問題

看板C_Sharp (C#)作者 (阿洽)時間9年前 (2016/07/20 17:11), 9年前編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/2 (看更多)
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
" WHERE NAME1 LIKE '%'"+"@prName"+"'%' " 這樣?
07/20 20:37, 2F

07/20 20:55, , 3F
like @prName, 然後addWithValue(@prName, "%"+str+"%")
07/20 20:55, 3F

07/21 08:45, , 4F
實測上述的方法都可以用~ 大感謝
07/21 08:45, 4F

07/21 08:46, , 5F
搞不懂 like 的部份為什麼要特殊處理... = =a
07/21 08:46, 5F
文章代碼(AID): #1NZq15HE (C_Sharp)
文章代碼(AID): #1NZq15HE (C_Sharp)