Asp.net SqlDataSource中使用like,報錯ORA-01722: 無效數字
以前在asp.net中,沒有使用過SqlDataSource來連線不同資料庫,首次嘗試卻問題多多,這裡將問題記錄下來,以便後面的朋友參考,更快的解決問題
1,ORA-00936: 缺少表示式 , 這裡主要是語法不清楚所造成的!
SqlDataSource 連線sql server資料庫時 SelectCommand="select * from tablename where id= @id"
連線oracle資料庫時 SelectCommand="select * from tablename where id= :id"
問題解決: 主要連線到不同資料庫時候,引數傳遞的寫法也會不同.
2,ORA-01722: 無效數字,
主要是在使用SqlDataSource 連線資料庫,使用LIKE語句查詢的時候,遇到這樣的錯誤。
SqlDataSource 連線sql server資料庫時 SelectCommand="select * from tablename where name like '%' + @id + '%' "
連線oracle資料庫時 SelectCommand="select * from tablename where name like '%'||:id||'%' "
問題解決: 主要連線到不同資料庫時候,連線字元的寫法不同。
如果是在後臺,通過引數,來拼接SQL字串的時候,就會很少遇到這樣的問題,使用SqlDataSource真的不方便除錯語法錯誤。
3,還有個蠻有意思的錯誤是,<asp:SqlDataSource /> 連線中,不寫ProviderName,會預設連線到Sql Server證據庫,ConnectionString為連線到Oracle中,就需要將ProviderName屬性也新增上,ProviderName="System.Data.OracleClient"