close

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產生的成果:
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>" 
            DeleteCommand="DELETE FROM &quot;DEMO_CUSTOMERS&quot; WHERE &quot;CUSTOMER_ID&quot; = ?" 
            ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" 
            SelectCommand="SELECT * FROM &quot;DEMO_CUSTOMERS&quot;" 
            UpdateCommand="UPDATE &quot;DEMO_CUSTOMERS&quot; SET &quot;CUST_FIRST_NAME&quot; = ? WHERE &quot;CUSTOMER_ID&quot; = ?">
            <UpdateParameters>
                <asp:Parameter Name="CUST_FIRST_NAME" Type="String" />
                <asp:Parameter Name="CUSTOMER_ID" Type="Decimal" />
            </UpdateParameters>
        </asp:SqlDataSource>      
        
 
自己動手修改以後(可運作):        
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            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">
            <UpdateParameters>
                <asp:Parameter Name="CUST_FIRST_NAME" Type="String" />
                <asp:Parameter Name="CUSTOMER_ID" Type="Decimal" />
            </UpdateParameters>
        </asp:SqlDataSource>

 

Oracle 請使用  :參數名稱

mySQL請用  ?參數名稱

SQL Server請用 @參數名稱

Access請用  ?  (不搭配參數名稱,只有 ?符號)

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

SqlDataSource 搭配 文章一開始介紹的第二套軟體

產生的 Web.Config 連線字串、連結字串(ConnectionString)

    <add name="OracleConnectionString"
      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

arrow
arrow

    MIS2000 Lab 發表在 痞客邦 留言(0) 人氣()