看板 Visual_Basic 關於我們 聯絡資訊
請輸入專案類型(網站專案或者應用程式專案): 網站專案 我用grid view撈oracle資料庫, 有兩個欄位:開始日期與結束日期 設定條件是如果這兩個日期都有指定, 就撈出開始日期大於等於指定日期1, 結束日期小於等於指定日期2的資料 為了好讀與安全我使用string builder與parameters去分析變數 但是試了很多種寫法只有單純用字串湊出SQL的方式能撈出資料 可是同樣的sql在sql developer裡面都能夠撈出資料 邏輯上應該是對的 首先: StringBuilder sbStringSql = new StringBuilder(); sbStringSql.Append("select A.ID,B.NAME,A.STARTDATE,A.ENDDATE FROM A,B"); sbStringSql.Append("WHERE 1=1 AND A.ID=B.ID"); 然後以下是可以撈回來的的寫法,單純用字串組,用大於跟小於寫區間 sbStringSql.Append( " and ((to_char(A.STARTDATE,'yyyy-mm-dd')) >='" + strSTARTDATE + "'"); sbStringSql.Append(" and (to_char(A.ENDDATE,'yyyy-mm-dd')) <='" + strENDDATE + "')"); 不行的寫法,大於跟小於的寫法用變數不行 sbStringSql.Append(" and ((to_char(A.STARTDATE,'yyyy-mm-dd')) >=:STARTDATE"); sbStringSql.Append(" and (to_char(A.ENDDATE,'yyyy-mm-dd')) <=:ENDDATE)"); if (strSTARTDATE != string.Empty) { da.SelectCommand.Parameters.Add( new OracleParameter("STARTDATE",strSTARTDATE)); } if (strENDDATE != string.Empty) { da.SelectCommand.Parameters.Add( new OracleParameter("ENDDATE", strENDDATE)); } 另外BETWEEN的寫法用變數跟字串組都不行 變數就是跟上面一樣用PARAMETER去解 字串就是把日期那邊直接帶入text box的text 不知道是SQL寫法問題還是程式問題,想來求救一下 --
mraaa:你的變數沒有設type所以預設字串!那你str的格式有照yyyy-mm 03/23 00:55
mraaa:-dd嗎? 03/23 00:55
問題解決了 為什麼邏輯對了、sql丟到developer也能過,程式還是撈不回來資料呢 原來是parameter去append來替換變數 必須要按照順序去append才可以... ※ 編輯: ian90911 來自: 182.235.186.208 (03/26 21:10)