• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Programmer's Cookbook

            {C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

            Simple ADO Database Read, Insert, Update and Delete using C#.

            Introduction

            Accessing databases is a common part of most applications and with the introduction of C# and ADO.NET, has become quite simple. This article will demonstrate the four most basic database operations. 

            • Reading data. This includes various data types such as integers, strings and dates.
            • Writing data. As with reading we will write these common types. This will be done using a SQL statement.
            • Updating or modifying data. Again we will use a simple SQL statement.
            • Deleting data. Using SQL.

            These operations will be performed against a Microsoft Access 2000 database, however SQL or other ADO data sources could be used by simply changing the connection string. 

            Getting started

            To use the ADO classes we need to include the ADO.NET namespace and a few handy date classes. Add the following line of code to the file where you want to perform the database operation. It should appear below the namespace line and above the class definition.

              using System.Data;             // State variables
              using System.Data.ADO;         // Database
              using System.Globalization;    // Date
            

            Depending on the type of project you are working with, you may need to add a reference to the System.Data namespace. You will know this if the compiler errors on the code you just added. To add the System.Data namespace;

            • Right click on the Solution explorer - References branch.
            • Select Add reference.
            • Select the .NET Framework tab.
            • Double click on the System.data.dll entry.
            • Select OK.
            • System.Data should now appear in the References list of the Solution explorer.

            The connection string is used during most operations, so I would recommend you make it a member of the class you will be working in. Note: In your application the path to the database file would be something else.

            //Attributes
             public const string DB_CONN_STRING =
               "Driver={Microsoft Access Driver (*.mdb)}; "+
               "DBQ=D:\\CS\\TestDbReadWrite\\SimpleTest.mdb";
            

            Reading data

            Now things get interesting. Reading is done using the ADODataReader class. (See Chris Maunder's article The ADO.NET ADODataReader class for more info on this class. ) The steps to perform the read are;

            • We open the database with an ADOConnection.
                  ADOConnection conn =
                             new ADOConnection(DB_CONN_STRING);
                  conn.Open();
            • We create a SQL statement to define the data to be retrieved. This command is executed to return an ADODataReader object. Note the out keyword in the Execute method. This is C# talk for pass by reference.
                  ADODataReader dr;
                  ADOCommand cmd =
                     new ADOCommand( "SELECT * FROM Person", conn );
                  cmd.Execute( out dr);
            • We loop through each record in the ADODataReader until we are done. Note: The data is returned directly as a string and the field name is used to indicate the field to read.
                  while( dr.Read() )
                  {
                      System.Console.WriteLine( dr["FirstName"] );
                  }
            • We clean up.  

            However, as good programmers we would have also wrapped the lot in a try/catch/finally to ensure we handled anything bad.

             try
             {
                 .... the database operations ...
             }
             catch( Exception ex )
             {
               System.Console.WriteLine( "READING:" );
               System.Console.WriteLine( "  ERROR:" + ex.Message );
               System.Console.WriteLine( "  SQL  :" + sSqlCmd );
               System.Console.WriteLine( "  Conn.:" + DB_CONN_STRING );
             }
             finally
             {
               // Close the connection
               if( conn.State == DBObjectState.Open )
                 conn.Close();
             }
            

            Reading different data types

            The dr["stuff"] is usually able to return a string of some sort. However to get an int or DateTime object it is often necessary to cast the data. This is usually done with a simple case or using one of ADODataReader's many build in conversions. ie

             int nOrdinalAge = dr.GetOrdinal( "Age" );
             int nAge = dr.GetInt32( nOrdinalAge );
            
             DateTime tUpdated = (DateTime)dr["Updated"];
            

            Note the use of GetOrdinal to locate the field to read by name. If the field is blank (not been populated yet), the above code will throw an exception. To catch this condition we check if data exists with the IsNull method as follows.

             int nOrdinalAge = dr.GetOrdinal( "Age" );
             if( dr.IsNull( nOrdinalAge ) )
             {
               System.Console.WriteLine( " Age  : Not given!" );
             }
             else
             {
               int nAge = dr.GetInt32( nOrdinalAge );
               System.Console.WriteLine( " Age  : " + nAge );
             }
            

            Insert, Modify, Delete and other SQL commands

            Inserting, Modifying and Deleting can very simply be done using SQL statements. The following code performs a SQL command to insert a record.

             // SQL command
             String sSQLCommand =
             "INSERT INTO Person (Age, FirstName, Description, Updated)  " +
             "VALUES( 55, 'Bob', 'Is a Penguin', '2001/12/25 20:30:15' );";
             // Create the command object
             ADOCommand cmdAdder = new ADOCommand(
                 sSQLCommand,
                 DB_CONN_STRING);
             cmdAdder.ActiveConnection.Open();
             // Execute the SQL command
             int nNoAdded = cmdAdder.ExecuteNonQuery();
             System.Console.WriteLine(
             "\nRow(s) Added = " + nNoAdded + "\n" );
            

            Note: The try/catch was not shown in the above example but should wrap the above code.

            Inserting

            The above code inserted a record by building a SQL command which was later executed. Some things to note in the formatting of the command are;

            • Numerical values are presented directly. No single quotes (').
            • Strings are presented wrapped in single quotes ('blah').
            • Be sure the strings do not include any embedded single or double quotes. This will upset things.
            • Date and times are presented wrapped in single quotes in international format ('YYYYY/MM/DD HH:MM:SS').

            Modifying

            The UPDATE command indicates the records to be modified and the modification to be made. The return value of the ExecuteNonQuery() indicates the number of records changes so this would return 5 if there were 5 Peter's in the table. 

             String sSQLCommand =
               "UPDATE Person SET Age = 27 WHERE FirstName = 'Peter'";
            

            Deleting

            The DELETE command indicates the records to be deleted. This could be several several records. The return value of the ExecuteNonQuery() indicates the number of records changes so this would return 2 if there were 2 Bobo in the table. Both Bobo's would be deleted.

             String sSQLCommand =
               "DELETE FROM Person WHERE FirstName = 'Bobo'";
            

            About the sample code

            The sample is a simple console application that perform each of the database operations on a provided Microsoft Access database. To build it, open the TestDbReadWrite.csproj file as a project in the Visual Studio.NET IDE. Change the DB_CONN_STRING variable in MainConsole.cs to point to the SimpleTest.mdb. Build it and away you go.

            Conclusion

            Now you should be able to perform the basic database operation in C#, get out there and cut some code. Take the time to learn SQL. Also read articles on the why and how this works. If you get really bored check out my site at www.mctainsh.com for more updates on simple coding.

            Downloads

            posted on 2005-11-21 12:20 夢在天涯 閱讀(1330) 評論(1)  編輯 收藏 引用 所屬分類: C#/.NET

            評論

            # re: Simple ADO Database Read, Insert, Update and Delete using C#. 2014-05-12 21:28 Heemanshu Bhalla

            Nice tutorial

            there is also a nice link here it has also provided snapshots with step by step and demo app to download

            http://geeksprogrammings.blogspot.com/2014/05/sql-insert-update-delete-using-c.html  回復  更多評論   

            公告

            EMail:itech001#126.com

            導航

            統(tǒng)計

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1808189
            • 排名 - 5

            最新評論

            閱讀排行榜

            伊人热热久久原色播放www| 麻豆成人久久精品二区三区免费| 91精品国产色综久久| 久久人人爽人人爽人人片AV东京热| 香蕉久久久久久狠狠色| 精品熟女少妇av免费久久| 久久露脸国产精品| 国产一级做a爰片久久毛片| 日韩亚洲国产综合久久久| 国产精品久久永久免费| 久久久久亚洲精品日久生情 | 久久久综合九色合综国产| 久久中文精品无码中文字幕| 久久国产高潮流白浆免费观看| 国内精品久久久久久不卡影院| 久久久国产精品亚洲一区| 久久只有这精品99| 久久综合五月丁香久久激情| 国产精品视频久久| 国产精品美女久久久久久2018| 亚洲国产成人久久笫一页| 国产精品综合久久第一页| 99久久久国产精品免费无卡顿| 国产aⅴ激情无码久久| 色播久久人人爽人人爽人人片aV | 伊人久久大香线蕉av一区| 欧美亚洲日本久久精品| 国产精品久久久久久久久久免费| 久久男人Av资源网站无码软件| 亚洲va久久久噜噜噜久久男同| 久久天天躁狠狠躁夜夜躁2014| 亚洲伊人久久综合影院| 精品久久久久中文字| 久久久精品久久久久久| 久久精品国产国产精品四凭| 久久se精品一区二区影院| 久久精品成人免费观看97| 亚洲精品无码久久久| 久久精品国产亚洲αv忘忧草| 亚洲人成精品久久久久| 亚洲精品无码久久久久久|