2016年12月27日 星期二

Oracle 與 ASP.NET SqlDataSource -- 錯誤訊息 ORA-00911: invalid character

ASP.NET使用 Oracle DB常見的錯誤 -- 

SqlDataSource在「進階」按鈕產生的SQL指令,會產生錯誤 
錯誤訊息 ORA-00911: invalid character


要使用Oracle可以到原廠網站下載,他們也有 Express版了

兩套軟體是撰寫 .NET必備的

第二,同一頁的下方,就有Visual Studio的套件,


安裝過程中,請注意自己的 系統管理員密碼(自己填寫時不要忘記!)
安裝完成後,登入帳號為SYSTEM,密碼是你自己設定的。


接下來,第二套軟體 for Visual Studio & .NET

安裝到最後需要填寫資料庫的資料,下圖僅供參考:
      
完成後,您可以透過 Web介面登入  Oracle
    登入帳號為SYSTEM,密碼是你自己設定的。
    新增一個自己的帳號
    裡面也內建一些DEMO用的資料庫範例,類似北風資料庫的訂單系統
    
========================================================================
撰寫 ASP.NET時,如果用簡單的精靈步驟,GridView + SqlDataSource
一開始的連線字串,可能是最容易卡關的地方。
其實不難,資料都在「您剛剛安裝DB時,填寫(設定)過了」。
    
如果真的還不會跑,可能要調整您的 Windows Firewall(防火牆),
因為Oracle DB 預設使用的 Port 1521 & 1522
========================================================================

SqlDataSource在「進階」按鈕產生的SQL指令,會產生錯誤
錯誤訊息 ORA-00911: invalid character

SQL指令的部分,必須手動 自行修改一下
原本SqlDataSource產生的成果:
       
            ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>" 
            DeleteCommand="DELETE FROM "DEMO_CUSTOMERS" WHERE "CUSTOMER_ID" = ?" 
            ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" 
            SelectCommand="SELECT * FROM "DEMO_CUSTOMERS"" 
            UpdateCommand="UPDATE "DEMO_CUSTOMERS" SET "CUST_FIRST_NAME" = ? WHERE "CUSTOMER_ID" = ?">
           
               
               
           
       
      
        

自己動手修改以後(可運作):        
       
            ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>" 
            ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" 
            SelectCommand="SELECT * FROM DEMO_CUSTOMERS" 
            UpdateCommand="UPDATE DEMO_CUSTOMERS SET CUST_FIRST_NAME = :CUST_FIRST_NAME WHERE CUSTOMER_ID = :CUSTOMER_ID">
           
               
               
           
       

Oracle 請使用  :參數名稱
mySQL請用  ?參數名稱
SQL Server請用 @參數名稱
Access請用  ?  (不搭配參數名稱,只有 ?符號)

關於 mySQL與Oracle參數的寫法,可以參閱這篇文章:

SqlDataSource 搭配 文章一開始介紹的第二套軟體
產生的 Web.Config 連線字串、連結字串(ConnectionString)
   
      connectionString="DATA SOURCE=127.0.0.1:1521/XE;PASSWORD=密碼;PERSIST SECURITY INFO=True;USER ID=登入帳號"
      providerName="Oracle.ManagedDataAccess.Client" />

      連線字串上的資訊,在您安裝時(你自己)就設定好了
      不要傻傻照著抄寫,謝謝


我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

沒有留言: