iT邦幫忙

0

ASP.NET SqlDataSource搭配 mySQL與 Oracle。「參數」寫法的差異?

如果您使用 mySQL或是 Oracle搭配 ASP.NET 的 SqlDataSource 小精靈

第一個會遇見的錯誤是什麼?
該怎麼防範與修正呢?

他們兩種資料庫的「參數」寫法,跟SQL Server有何不同?

希望這兩個範例對您有幫助。
要使用Oracle可以到原廠網站下載,他們也有 Express版了

兩套軟體是撰寫 .NET必備的
第一,Oracle Database Express Edition 11g Release 2 (2011 九月)
http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html

第二,同一頁的下方,就有Visual Studio的套件,
Oracle Developer Tools for Visual Studio .NET

安裝過程中,請注意自己的 系統管理員密碼(自己填寫時不要忘記!)

安裝完成後,登入帳號為SYSTEM,密碼是你自己設定的。

接下來,第二套軟體 for Visual Studio & .NET
安裝到最後需要填寫資料庫的資料

如果真的還不會跑,可能要調整您的 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 "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" = ?">

<asp:Parameter Name="CUST_FIRST_NAME" Type="String" />
<asp:Parameter Name="CUSTOMER_ID" Type="Decimal" />

</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">

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

因為圖片無法轉貼過來,完整內容請參閱

Oracle 與 ASP.NET SqlDataSource -- 錯誤訊息 ORA-00911: invalid character
https://dotblogs.com.tw/mis2000lab/archive/2014/04/01/oracle_asp-net_sqldatasource_ora-00911_invalid_character.aspx

如果您使用 mySQL

首先,我們先到 MySQL官方網站,下載相關軟體。
http://dev.mysql.com/downloads/windows/

我建議下載MySQL Installer大約有255MB
會有MySQL / ODBC / .NET Conector與相關的軟體 for Windows

安裝之後,您可以輸入管理者(root)的帳號與密碼
也可以輸入個人用戶的帳號與密碼,我設定一個 test帳號(密碼也相同)

使用 SqlDataSource的「進階」按鈕,產生新增、刪除、修改的SQL指令以後,
執行時出現以下的錯誤畫面

錯誤訊息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[test_table]' at line 1 「

回頭看一下HTML檔,發現 SqlDataSource在資料表、欄位都加上 [ ] 符號
MySQL不允許這樣做

修正後即正常!

因為圖片無法轉貼過來,完整內容請參閱

ASP.NET(Visual Studio) -- SqlDataSource 與 MySQL的設定與錯誤解決
https://dotblogs.com.tw/mis2000lab/archive/2014/02/17/sqldatasource_mysql_visual_studio_20140217.aspx


尚未有邦友留言

立即登入留言