青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

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 夢在天涯 閱讀(1341) 評論(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

導航

統計

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

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1814996
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              亚洲综合精品| 一区在线免费| 久久综合九色综合欧美就去吻| 亚洲午夜久久久久久久久电影网| 99国产精品99久久久久久粉嫩| 99ri日韩精品视频| 亚洲视频一区在线| 午夜精品福利在线| 久久精品视频免费| 欧美精品福利| 国产伦精品一区二区三区在线观看 | 国产欧美日韩精品丝袜高跟鞋 | 久久精品亚洲| 久久一区二区精品| 91久久午夜| 99在线热播精品免费99热| 亚洲图片你懂的| 欧美一区三区三区高中清蜜桃| 蜜桃av综合| 国产欧美日韩亚州综合| 91久久精品美女| 性做久久久久久免费观看欧美| 免费在线观看精品| 一区二区国产精品| 免费在线观看成人av| 国产精品久久看| 91久久国产综合久久91精品网站| 亚洲欧美激情视频在线观看一区二区三区| 久久精品一二三区| 日韩一区二区免费看| 免费成人av| 韩国av一区二区三区| 一区二区三区免费看| 免费久久99精品国产自| 亚洲午夜未删减在线观看| 麻豆成人精品| 一区二区在线看| 欧美一区91| 一区二区电影免费观看| 欧美成人自拍| 亚洲国产成人精品久久久国产成人一区 | 欧美在线一区二区| 亚洲精品国产精品国产自| 久久精品国产清高在天天线| 国产精品超碰97尤物18| 亚洲激情校园春色| 蜜臀91精品一区二区三区| 先锋影音网一区二区| 国产精品久久999| 国产精品自在欧美一区| 欧美精选一区| 在线精品视频一区二区| 久久国产精品久久国产精品| 日韩视频三区| 欧美另类在线播放| 亚洲日本在线视频观看| 欧美高清视频一二三区| 久久九九全国免费精品观看| 国产主播喷水一区二区| 久久久精品久久久久| 欧美在线中文字幕| 国内一区二区三区在线视频| 性色av一区二区三区在线观看| 日韩亚洲欧美在线观看| 欧美日韩1080p| 一区二区三区高清视频在线观看| 亚洲人成亚洲人成在线观看图片 | 亚洲二区在线| 久久中文精品| 亚洲另类一区二区| 亚洲美女淫视频| 欧美午夜精品久久久| 亚洲伊人色欲综合网| 亚洲自拍偷拍一区| 国产一区二区| 免费在线欧美黄色| 欧美久久视频| 亚洲欧美三级在线| 久久久精品午夜少妇| 亚洲欧洲精品一区二区精品久久久| 亚洲国内精品| 国产精品国产a级| 久久精品视频在线免费观看| 久久久久一区二区| 日韩视频亚洲视频| 一区二区av在线| 影音先锋日韩资源| 亚洲福利专区| 国产精品欧美久久| 奶水喷射视频一区| 欧美三级网页| 久久漫画官网| 欧美日韩成人| 裸体丰满少妇做受久久99精品| 欧美人成网站| 巨乳诱惑日韩免费av| 欧美日韩午夜| 麻豆精品一区二区综合av| 欧美系列一区| 欧美激情欧美激情在线五月| 国产精品色午夜在线观看| 免费成人小视频| 国产精品美女在线观看| 亚洲福利在线看| 国语自产偷拍精品视频偷| av成人手机在线| 亚洲精品国产精品国产自| 亚洲欧美日韩一区二区| 一本色道**综合亚洲精品蜜桃冫| 午夜国产一区| 欧美一区二区大片| 欧美激情一区二区三区四区 | 夜夜爽www精品| 国内精品久久久久久久影视麻豆| 亚洲国产天堂久久综合| 国内外成人免费激情在线视频网站 | 亚洲精品国产精品国自产在线| 国产日韩在线亚洲字幕中文| 99国产精品99久久久久久粉嫩| 亚洲成人自拍视频| 欧美一级视频| 亚洲欧美日韩国产综合在线| 欧美激情综合网| 亚洲第一区在线| 在线免费观看成人网| 午夜欧美大尺度福利影院在线看| 亚洲午夜激情在线| 欧美日韩中文字幕在线| 亚洲欧洲日本一区二区三区| 韩国久久久久| 久久久亚洲国产天美传媒修理工| 久久国产毛片| 国产欧美婷婷中文| 欧美一区免费视频| 久久久久国产精品www| 国产亚洲成精品久久| 欧美一区二区日韩| 麻豆91精品| 亚洲国产精品久久精品怡红院| 久久精品免费播放| 嫩草国产精品入口| 在线观看视频免费一区二区三区| 久久九九热re6这里有精品| 久久亚洲欧洲| 亚洲高清视频一区二区| 亚洲国产日韩一级| 欧美国产免费| 亚洲视频免费观看| 久久狠狠亚洲综合| 在线观看91久久久久久| 欧美成人精品1314www| 亚洲国产精品999| 中文一区字幕| 国产伦理一区| 久久亚洲欧美| 亚洲理伦电影| 久久久免费精品视频| 亚洲国产乱码最新视频| 欧美激情一区在线观看| 中文亚洲欧美| 老司机一区二区三区| 亚洲美女精品一区| 欧美小视频在线| 亚洲女爱视频在线| 欧美成人精品在线观看| 亚洲小视频在线| 国产视频一区二区在线观看| 农村妇女精品| 亚洲在线1234| 亚洲国产经典视频| 午夜精品久久久久影视 | 亚洲视频在线一区观看| 欧美日韩一区二区欧美激情| 亚洲欧美卡通另类91av| 欧美不卡视频| 亚洲午夜av电影| 狠狠色综合一区二区| 欧美黑人一区二区三区| 性久久久久久| 99在线精品免费视频九九视| 久久综合久久久| 日韩亚洲欧美中文三级| 韩国自拍一区| 国产精品女人毛片| 欧美另类在线观看| 久久精品国产一区二区三区免费看| 亚洲精品国精品久久99热| 久久免费视频网| 亚洲欧美日韩国产综合精品二区| 在线精品亚洲一区二区| 国产精品有限公司| 欧美日韩三区四区| 老司机免费视频久久| 午夜在线视频一区二区区别| 亚洲精品在线二区| 亚洲激情社区| 欧美成年视频| 美女脱光内衣内裤视频久久影院 | 亚洲免费在线视频| 99国产精品国产精品久久|