台灣最大程式設計社群網站
線上人數
850
 
會員總數:244532
討論主題:188692
歡迎您免費加入會員
討論區列表 >> ASP.NET >> GridView1_RowDataBound 裡查詢資料表,查到會報錯
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
GridView1_RowDataBound 裡查詢資料表,查到會報錯
價值 : 50 QP  點閱數:121 回應數:6

樓主

冷逸雲
初學者
90 60
506 104
發送站內信

.aspx





.cs




現在的問題是
沒找到的那些頁次都不會報錯
有找的那些頁次都會報錯

錯誤訊息:
接近 '*' 之處的語法不正確。
行 28:SqlCommand getagent = new SqlCommand("select * from agent where id =" + agent.Text, conn);
行 29:conn.Open();
行 30:SqlDataReader rd = getagent.ExecuteReader();
行 31:rd.Read();
行 32:if (rd.HasRows)







搜尋相關Tags的文章: [ RowDataBound ] , [ SqlDataReader ] ,
本篇文章發表於2019-06-09 14:59
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

冷逸雲
檢舉此回應
上面的<asp:Label <span style="color: Red;">ID="agent"</span> runat="server" Text='<%# Bind("c_agent") %>'>
正確的應該是<asp:Label ID="agent" runat="server" Text='<%# Bind("c_agent") %>'>
不知道選擇字體顏色小舖會自動加上span
本篇文章回覆於2019-06-09 15:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

冷逸雲
檢舉此回應
剛剛試了一下把
if (rd.HasRows)
{
agent.Text = rd["agentname"].ToString();
}
改成
if (rd.HasRows)
{
agent.Text = "123";
}
就沒有報錯..不知道為什麼
資料表中確實有agentname的啊
本篇文章回覆於2019-06-09 15:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

MIS2000 Lab
檢舉此回應
依照您的程式碼來猜測,
但agent資料表的「agentname」欄位裡面有「值」嗎?

另外,建議改成參數寫法
SqlCommand getagent = new SqlCommand("select * from agent where id = @agent", conn);
getagent .Parameters.AddWithValue("@gaent", "輸入的數值");
//程式碼僅供參考,我盲打的
本篇文章回覆於2019-06-10 16:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
錯誤訊息:
接近 '*' 之處的語法不正確。


比較懷疑您的SQL語法可能有問題


SQL Injection的問題要特別注意與處理∼
應該判斷畫面中agent是否有資料,有資料才處理

以上資訊提供您參考
ps.假日來看的人不多
貼文如果要設定無解答,建議多保留幾天(工作天),確認無人回覆,再設定無解答(版規)
我先把您的無解答狀態取消掉
^_^
本篇文章回覆於2019-06-10 17:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
補充樓上#4

加上Response.Write(SQLTxt);或者其他方式,將您的SQL語法顯示出來,再判斷是否如您預期

^_^
本篇文章回覆於2019-06-10 17:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

冷逸雲
檢舉此回應
回應MIS2000 Lab大大及版主topcat
小弟設定無解答是因為自己已經解決
另外資料表中 agentname是確定有值的
有找到報錯的原因應該是foreach的關係
因為會一直迴圈將agentname重複寫入agent.Text
所以agent.Text就越來越長,導致在第二次以後就出現錯誤

而剛好agentname本身又帶有星號...所以我一開始也以為是SQL語法寫錯

所以小弟將Foreach拿掉...並把agent.Text改成e.Row.Cell[5].Text
如下

if (rd.HasRows)
{
e.Row.Cells[5].Text = rd["agentname"].ToString();
}


另外小弟以後會再多多留意注意SQL Injection的問題

謝謝2位大大的細心指導與協助,非常感謝
小弟這方面實在是菜到不能在菜了
本篇文章回覆於2019-06-15 23:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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