台灣最大程式設計社群網站
線上人數
1795
 
會員總數:245979
討論主題:189557
歡迎您免費加入會員
討論區列表 >> ASP.NET >> cmd.Parameters轉換失敗
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
cmd.Parameters轉換失敗
價值 : 60 QP  點閱數:787 回應數:6
樓主

J.Y
門外漢
0 62
1026 92
發送站內信


再執行下面這段時出現(System.Data.SqlClient.SqlException (0x80131904): 從字元字串轉換成日期及/或時間時,轉換失敗)
把sqlstr放到sql查詢可以RUN
我的懷疑是SET@a 那段為了做pivot轉成一段字串執行
而 cmd.Parameters 的值傳不進這段裡
請問有甚麼方法可改善嗎?







搜尋相關Tags的文章: [ Parameters ] ,
本篇文章發表於2017-11-23 19:46
1樓
最有價值解答

MIS2000 Lab
檢舉此回應
不確定資料表的「欄位名稱」、「資料表名稱」能否使用參數來做?

以前有試過,好像不行
https://dotblogs.com.tw/mis2000lab/archive/2010/02/12/13670.aspx

您參考看看
本篇文章回覆於2017-11-23 20:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

小羊窒息
捐贈 VP 給 缺氧的羊:窒息 檢舉此回應
針對 Parameters 的部份...




把連續2個單引號的部份移掉看看。。。



=================
話說回來,where條件的寫法應該可以直接改成
WHERE ( err_mafpn = @err_mafpn ) and ( err_date between @err_sdate and @err_edate )
不需要特地加上convert去轉換成yyyy/MM/dd的文字格式

真的要特地加convert的話,在asp.net的部份直接省略無意義的轉換會更容易理解
cmd.Parameters.Add("@err_sdate", SqlDbType.VarChar, 10).Value = TextBox1.Text
cmd.Parameters.Add("@err_edate", SqlDbType.VarChar, 10).Value = TextBox2.Text

(當然也不排除你被特殊的原因卡著,不得不寫成 Value = FormatDateTime(TextBox2.Text, DateFormat.ShortDate))
本篇文章回覆於2017-11-24 11:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

J.Y
檢舉此回應
感謝兩位提供解答

後來想到直接不用變數方式試看看

GOOGLE到此方式可用


本篇文章回覆於2017-11-24 12:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小羊窒息
捐贈 VP 給 缺氧的羊:窒息 檢舉此回應
直接用字串來連當然可是,但是非常不建議(請小心隱碼攻擊)
本篇文章回覆於2017-11-24 13:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

J.Y
檢舉此回應
了解會有隱碼攻擊

但我這單純內部USER查詢使用

暫且無疑慮

感謝~後續再用預存程序試試
本篇文章回覆於2017-11-24 16:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

MIS2000 Lab
檢舉此回應
內部 User也有高手(俗話說:高手在民間)

公司在大陸的工廠就曾發生這種事,
某人離職前,學了幾招,搞了就跑

小心!
本篇文章回覆於2017-11-24 16:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.