顯示具有 SqlDataSource 標籤的文章。 顯示所有文章
顯示具有 SqlDataSource 標籤的文章。 顯示所有文章

2017年1月9日 星期一

17/30 網頁與資料庫#9 -- 開放式並行存取 (Optimistic Concurrency)

SqlDataSource控制項的設定步驟裡面
當您按下「進階」按鈕,就會產生對應的新增、刪除、修改的SQL指令
(上一篇文章 http://mis2000lab.blogspot.com/2017/01/1630-8-html.html )
有一個選項,名為「開放式並行存取 (Optimistic Concurrency)」
名詞有點坳口,這到底是什麼東西啊?
我用 Youtube影片為您示範一次,希望這樣比較容易明瞭。
SqlDataSource 開放式並行存取 (Optimistic Concurrency),以GridView為例
https://youtu.be/R9c3krJrZsE

其實,您在大型控制項的 xxx_Updating事件裡面可以看到這樣的程式碼,意思也差不多。
e.NewValues["欄位"]
e.OldValues["欄位"] ,簡單的說,這就是您修正「以前」,原本的數值
用來偵測、比較,您取出這一筆記錄時,是否有人也同時取出修改?
如果是的話,那麼您寫回資料庫時,就會被阻擋。
不知道我這樣解釋「開放式並行存取 (Optimistic Concurrency)」,有沒有比較清楚?
這個範例可以很明白的指出:
文字+圖片的傳統敘述,比不上現場操作(影片)的解說
可以讓人一看就懂。
下一篇文章,我們開始自己寫 ADO.NET 程式存取資料庫吧?不要再依賴精靈了
請看 http://mis2000lab.blogspot.com/2017/01/1830-adonet-1-adonet.html

14/30 網頁與資料庫#6 -- SqlDataSource做不到、做不好的地方

雖然前面的文章 (http://mis2000lab.blogspot.com/2017/01/1330-5-calendardatabinding.html)
提到 SqlDataSource加上大型控制項(資料繫結控制項)可以做出不少變化
但還是有些隱藏的缺失
也因為有這些缺失,所以自己寫程式來處理,可以做得比「精靈」更好
今天與您分享的就是:SqlDataSource做不到、做不好的地方
Youtube影片:https://youtu.be/P7AKhH-9YrE

當我們練習多個ASP.NET控制項、SqlDataSource的互動。
您可知道這些精靈組合出來的東西,有不少漏洞與缺失?
該怎麼處理?考驗您(初學者)對ASP.NET觀念是否熟悉?
尤其是「DataBinding的時機
==========================================
如果您可以控制 大型控制項 「DataBinding的時機
那麼您可以進行下一個範例「我的 GridView有 "新增"功能」
透過控制 GridView的資料來源:
  1. "有"資料的時候,就呈現資料。一般的 GridView外觀。
  2. "沒有" 資料時,就呈現GridView「空白樣版 EmptyDataTemplate」。
    裡面事先加入 DetailsView的「新增」便可完成
請看下一篇文章

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

2016年12月21日 星期三

ADO.NET #4.1(改),自己設定畫面,讓SqlDataSource幫我「刪除」一筆資料

自己設定畫面,讓SqlDataSource幫我「刪除」一筆資料
透過 SqlDataSource來做,幾乎不寫程式就能刪除


這篇文章算是以前的範例,稍做改良。給學員回家練習的。
這個範例不難,書本「下集」有講,以前也分享過。

您選了DropDownList裡面的某一篇文章之後,按下 Button就會被刪除
我簡單用圖片解說如下,三張圖片搞定:

1.  DropDownList1 + SqlDataSource1
    把文章 title & id 列在 DropDowlist1裡面。
    文章title,是給人看的(Text屬性)。
    id,是程式會用到的值(Value屬性)

2. 產生第二個 SqlDataSource2,我們只取他的 Delete指令(也就是 DeleteQuery)
    刪除指令,只需要填入ID
    Delete from 資料表 where id = @ID
    後面的「@ID」請對應本頁的 DropDownList1

3. 按下Button,執行 SqlDataSource2.Delete();
    完成!
您選了DropDownList裡面的某一篇文章之後,按下 Button就會被刪除

        文章列表:
                               DataSourceID="SqlDataSource1" DataTextField="title" DataValueField="id">
       

       
                  ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT [id], [title] FROM [test]">

       

       


                    ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
            DeleteCommand="DELETE FROM [test] WHERE [id] = @id" OnDeleted="SqlDataSource2_Deleted">
           
                Control
Parameter ControlID="DropDownList1" Name="id" PropertyName="SelectedValue" Type="Int32" />
           
       

       

       

        OnClick="Button1_Click" />
 

 
 
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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

[YouTube影片] GridView + DetailsView兩者的資料與"頁數"連動

2009年發表的範例,連我都忘了發表在書本裡面。這次錄製成Youtube影片分享。
兩個控制項的「分頁」連動、互動 -- PageIndexChanging事件
深入探索 .NET資料存取:ADO.NET + SqlDataSource+ LINQ
ISBN13:9789572245682
出版社: 松崗。



YouTube影片: https://youtu.be/fGxCODffrmU


過去寫過的「分頁」範例頗多,但有些無法整理在書本裡面
趁這次有空整理,把所有手邊的範例、BLOG上的讀書心得等等
統整在這本新書裡面(2016/8月上市)-- http://m.sanmin.com.tw/Product/Index/005895863

深入探索 .NET資料存取:ADO.NET + SqlDataSource+ LINQ
ISBN13:9789572245682
出版社: 松崗。本書約 840頁。



本書目錄如下:
以前發表在 Youtube上的影片,都收錄在本書裡面
Part I:資料庫連線篇
第1章 程式與資料庫互動的四大步驟
商用應用程式連結資料庫是最早的第一步,不管是ASP.NET、PHP、JSP作法都雷同,本章我們將來了解這四大步驟為何。範例 ADO.NET程式的四大步驟--以DataReader為例
第2章 Connection資料庫連結
資料庫的連結(Connection)與相關的應用(MARS多重結果作用集、交易),常用的屬性與方法都會在本章介紹。
第3章 SQL Server連結共用(Connection Pooling)
集區(Pool)的建立及指派,以範例為您實作ClientConnectionId屬性。
第4章 Microsoft Azure雲端資料庫與LocalDb
介紹如何連結雲端資料庫(Microsoft Azure)以及SQL Server的LocalDB與範例安裝。
Part II:DataReader篇
第5章 SqlDataReader類別與常用方法
SqlDataReader觀念解說以及各種DataReader的應用範例與Case Study。
第6章 DataReader常用屬性
SqlDataReader常用方法與屬性的介紹。
第7章 SqlCommand類別
介紹SqlCommand的方法與應用情境,並告訴您如何避免SQL Injection的攻擊。
Part III:DataSet篇
第8章 DataSet(資料集)+ DataAdapter(資料配接器)
介紹Web網頁與Windows程式,使用DataSet的差異?以及何時該用DataReader和DataSet?
第9章 DataTable與DataView
本章介紹如何將DataColumn(資料行、欄位)、DataRow(資料列、記錄)加入DataTable。以及DataAdapter如何將不同資料來源加入DataSet。
第10章 DataAdapter與SqlDataAdapter類別
為您介紹DataAdapter(資料配接器)物件與DataSet 範例實作,MissingMappingAction 與MissingSchemaAction 屬性。以及SqlDataAdapter 的四個Command與參數的寫法,用來批次處理大量的SQL命令的UpdateBatchSize屬性。
Part IV:應用實戰篇
第11章 跨平台ADO.NET程式(Windows Form,exe執行檔)
本章介紹如何將ASP.NET網頁使用的ADO.NET改寫成Windows Form版(.exe檔)。範例 跨平台ADO.NET程式,把您的ASP.NET DataReader變成Windows Form(.exe檔)
第12章 自訂分頁(Paging),從資料來源進行「分頁」
本章的分頁程式,從DataSet 基礎入門版到每十頁區隔的進階版都有介紹,並且真正從資料來源作分頁。也為您介紹.NET 4.5 起的GridView自訂分頁—AllowCustomPaging 與 VirtualItemCount屬性。範例 [.NET 4.5]GridView自訂分頁的新屬性,AllowCustomPaging與 VirtualItemCount #2 範例 - DataReader +資料庫分頁
第13章 分頁優化與最佳化,StringBuilder、SQL指令的改善
字串相連是網頁程式常用的技巧,本章將告訴您何時用String 或StringBuilder讓程式更有效率,並從實務中驗證各種T-SQL 指令的分頁成效,例如:TOP 與Where、ROW_NUMBER 與OFFSET...FETCH。範例 ASP.NET資料分頁的SQL指令--ROW_NUMBER與OFFSET...FETCH
Part V:網路服務篇
第14章 SOA服務導向應用程式(I)─ Web Service(.asmx)
介紹Web Service(Web 服務,ws-*)可用的資料型態與JSON 格式,可以搭配各種前端畫面。本章包含:透過Web Service 做Single Sign-on(SSO)、使用交易(Transaction)、SoapException例外狀況。
第15章 SOA服務導向應用程式(II)— WCF服務
本章介紹WCF功能與Microsoft技術的整合、WCF架構與Server/Client端實作,以及WCF文件中常用的詞彙解析。
第16章 jQuery、AJAX與Web Service
本章討論jQuery函式庫入門與應用,讓您遊歷DOM、控制事件,並搭配Web Service一同運作。範例 [ASP.NET]無限下拉的資料呈現 (類似FaceBook,分頁效果) - jQuery + Web Service + Repeater控制項
Part VI:進階範例篇
第17章 GridView 100%自己動手寫程式
以ADO.NET為您示範手動撰寫GridView各種功能,如DataReader + SqlCommand,以及DataSet + SqlDataAdapter。
第18章 非同步(Async)ADO.NET程式設計
介紹非同步程式設計概論,(.NET 2.0).BeginExecuteReader() 與.EndExecuteReader()方法。
第19章 .NET 4.5起的非同步(Async)ADO.NET程式設計
.NET 4.5 起的「非同步」存取,寫法更簡單。您可以學會傳回類型與新的非同步方法。我們還會以實務範例介紹BLOB、文字檔與XML 檔與資料庫的應用。範例 [ASP.NET].NET 4.5 非同步程式,從一張圖知道原來如此 (async & await)
第20章 資料庫交易(Transaction)與SqlBulkCopy單一大量複製
資料庫交易(Transaction)與TransactionScope 類別,該如何與SQL Server 整合?本章將為您介紹CommittableTransaction 類別與分散式交易SqlConnection 的.EnlistTransaction() 方法、SqlTransaction 類別與巢狀try...catch 擷取例外狀況。並為您解析交易的效率之爭與SqlBulkCopy 單一批次大量複製(包含非交易 & 交易兩種案例)
Part VII:ASP.NET SqlDataSource篇
第21章 DataSource控制項,資料來源控制項
本章將為您介紹資料來源控制項與資料繫結控制項,還有相關的資料繫結(綁定)與.DataBind() 方法。
第22章 SqlDataSource類別(只限Web Form可用)
DataSourceMode屬性可以自己動手設定,讓效能更好。也可以動手寫程式搭配「參數」避免資料隱碼攻擊。本章範例包含SqlDataSource的例外狀況處理(e.ExceptionHandled = true)與CRUD應用範例SqlDataSource範例與進階功能。
第23章 SqlDataSource 範例與進階功能
本章提供下列範例讓您功力倍增,包含:新增、刪除、修改時,遇見空白則取消。利用.Select()方法,自訂「輸出」畫面,手動呈現查詢的成果。以及SqlDataSource的快取和SqlCacheDependency屬性介紹。範例 ADO.NET #4(改),自己設定輸入畫面,讓SqlDataSource幫我們「新增」一筆資料
Part VIII:補充加強篇
第24章 參數與資料型別、SqlParameterCollection類別
本章介紹參數的用法讓您避開SQL Injection資料隱碼攻擊,包含SqlCommand & SqlDataAdapter的參數寫法、ParameterDirection屬性、SqlParameterCollection 類別、常用屬性與方法。
第25章 站內的搜尋引擎(I)─ 基礎入門
本章為範例實戰,為您實作單一欄位&多重欄位的搜尋(觀念解說)、操作SqlDataSource,或是自己動手撰寫「搜尋」程式。
第26章 站內的搜尋引擎(II)─ 範例應用
本章為範例實戰,教您實作用CheckBoxList輸入「複選」搜尋條件、輸入多重關鍵字的搜尋(String.Join()方法),最後搭配一個整合範例 ─ 將方法與資料表抽離,寫成類別檔。範例 [ASP.NET 微軟範例] 簡單搜尋引擎 #1 (類別檔入門)& 關鍵字的「高亮度(HighLight)」顯示
第27章 開放式並行存取(Optimistic Concurrency)
為您解析「封閉式」&「開放式」並行存取的觀念。範例 SqlDataSource 開放式並行存取 (Optimistic Concurrency),以GridView為例
第28章 企業函式庫Enterprise Library 6.0的DAAB
介紹以工廠模式撰寫的企業函式庫,其中與資料存取相關的DAAB是本文重點。
Part IX:LINQ篇
第29章 LINQ與ADO.NET
LINQ(整合查詢語法)的入門與觀念解析,為您介紹LINQ-to-DataSet、LINQ-to-SQL。
第30章 LINQ語法簡介與實戰
本文為LINQ語法實作,包含:查詢(Query)、資料來源、類型的關聯性與轉換、Case Study與各種查詢語法、Lambda運算式、聯結(join)等等。


我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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

2014年4月1日 星期二

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

這是我的文章備份,原文請看:

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

http://www.dotblogs.com.tw/mis2000lab/archive/2014/04/01/oracle_asp-net_sqldatasource_ora-00911_invalid_character.aspx 


要使用Oracle可以到原廠網站下載,他們也有 Express版了
兩套軟體是撰寫 .NET必備的
第二,同一頁的下方,就有Visual Studio的套件,
        Oracle Developer Tools for Visual Studio .NET
安裝過程中,請注意自己的 系統管理員密碼(自己填寫時不要忘記!)
安裝完成後,登入帳號為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">
           
               
               
           
       


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

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






............................. 寫信給我,mis2000lab (at) yahoo.com.台灣........................................................
.............................   facebook社團   https://www.facebook.com/mis2000lab   ............................
.............................   Google+   https://plus.google.com/100202398389206570368/posts ..............

ASP.NET課程 / ASP.NET教學,請看
    http://www.dotblogs.com.tw/mis2000lab/archive/2011/06/24/29807.aspx

    [台北] ASP.NET入門實戰 + ADO.NET進階【二合一】49 hr


ASP.NET影片、遠距教學,請看:
    http://www.dotblogs.com.tw/mis2000lab/archive/2015/03/09/aspnet-online-learning-distance-education-2015.aspx

    [遠距教學、教學影片] ASP.NET (Web Form) 六週課程 上線了!











這是我的文章備份,原文請看:

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

http://www.dotblogs.com.tw/mis2000lab/archive/2014/04/01/oracle_asp-net_sqldatasource_ora-00911_invalid_character.aspx