使用ADO.NET访问数据库

来源:互联网 发布:安卓自动接听电话软件 编辑:程序博客网 时间:2024/04/26 07:01
看了刘振岩先生编著的《基于.NET的Web程序设计》,摘录使用ADO.NET访问数据库的方法。
(一)   使用ADO.NET访问数据库的途径之一:
Connection-Command-DataReader-Response.Write
(1)Command对象和DataReader对象结合使用访问数据库,代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
 
namespace accessDataBase
{
       public class WebForm1 : System.Web.UI.Page
       {
              private void Page_Load(object sender, System.EventArgs e)
              {
                     //用Connection对象连接数据库
                     string connStr="server=ZHB//SQLSERVER;User ID=sa;Pwd=sa;database=northwind";
                     SqlConnection myConnection=new SqlConnection(connStr);
                     myConnection.Open();
                     //用Command对象访问数据库
                     string queryStr="select top 10 CustomerID,CompanyName,Phone from Customers";
                     SqlCommand myCommand=new SqlCommand(queryStr,myConnection);
                     //用DataReader对象读取数据表中的数据,输出并显示数据
                     SqlDataReader myDataReader=myCommand.ExecuteReader();
                     Response.Write("使用DataReader访问数据库<hr>");
                     try
                     {
                            while(myDataReader.Read())
                            {
                                   for(int i=0;i<myDataReader.FieldCount;i++)
                                   {
                                          Response.Write(myDataReader.GetName(i)+":"+myDataReader.GetValue(i)+"<br>");
                                   }
                                   Response.Write("<br>");
                            }
                     }
                     finally
                     {
                            //断开和数据库的连接
                            myDataReader.Close();
                            myConnection.Close();
                     }
 
              }
 
              #region Web 窗体设计器生成的代码
              override protected void OnInit(EventArgs e)
              {
                     //
                     // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
                     //
                     InitializeComponent();
                     base.OnInit(e);
              }
             
              /// <summary>
              /// 设计器支持所需的方法 - 不要使用代码编辑器修改
              /// 此方法的内容。
              /// </summary>
              private void InitializeComponent()
              {   
                     this.Load += new System.EventHandler(this.Page_Load);
 
              }
              #endregion
       }
}
(2)使用Command对象的ExecuteScalar方法,代码如下:
namespace accessDataBase
{
       public class useSqlCommand1 : System.Web.UI.Page
       {
              private void Page_Load(object sender, System.EventArgs e)
              {
                     string connStr="server=ZHB//SQLSERVER;User ID=sa;Pwd=sa;database=northwind";
                     SqlConnection myConnection=new SqlConnection(connStr);
                     myConnection.Open();
                     string queryStr="select Count(*) from Customers";
                     SqlCommand myCommand=new SqlCommand(queryStr,myConnection);
                     int nCount=(int)myCommand.ExecuteScalar();
                     Response.Write("使用Command对象的ExecuteScalar方法<hr>");
                     Response.Write("客户资料总数是:"+nCount);
                     myConnection.Close();
              }
 
              #region Web 窗体设计器生成的代码
              override protected void OnInit(EventArgs e)
              {
                     //
                     // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
                     //
                     InitializeComponent();
                     base.OnInit(e);
              }
             
              /// <summary>
              /// 设计器支持所需的方法 - 不要使用代码编辑器修改
              /// 此方法的内容。
              /// </summary>
              private void InitializeComponent()
              {   
                     this.Load += new System.EventHandler(this.Page_Load);
              }
              #endregion
       }
}
(3)使用Command对象的ExecuteNonQuery方法
namespace accessDataBase
{
     public class useSqlCommand2 : System.Web.UI.Page
     {
          private void Page_Load(object sender, System.EventArgs e)
         {
              string connStr="server=ZHB//SQLSERVER;User ID=sa;Pwd=sa;database=myWebDB";
              SqlConnection myConnection=new SqlConnection(connStr);
 
              string insertStr="INSERT INTO information (title,autyor,content,datetime) VALUES ('ADO.NET','green','ADO.NET的组成',getdate())";
              SqlCommand myCommand=new SqlCommand(insertStr,myConnection);
              string delStr="DELETE FROM information WHERE title='ADO.NET'";
              SqlCommand myDelCommand=new SqlCommand(delStr,myConnection);
              string Message=null;
              try
              {
                   myConnection.Open();
                   myDelCommand.ExecuteNonQuery();
                   myCommand.ExecuteNonQuery();
                   Message="新记录已插入";
              }
              catch(Exception ept)
              {
                   Message="未能插入记录:"+ept.ToString();
              }
              finally
              {
                   myConnection.Close();
              }
              Response.Write(Message);
         }
 
          #region Web 窗体设计器生成的代码
          override protected void OnInit(EventArgs e)
         {
              //
              // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
              //
              InitializeComponent();
              base.OnInit(e);
         }
        
         ///<summary>
         /// 设计器支持所需的方法 - 不要使用代码编辑器修改
         /// 此方法的内容。
         ///</summary>
          private void InitializeComponent()
         {   
              this.Load += new System.EventHandler(this.Page_Load);
 
         }
          #endregion
     }
}
(二)   使用ADO.NET访问数据库的途径之二:
Connection-DataAdapter-DataSet-DataGrid
(1)使用DataAdapter对象将数据填充到DataSet中并显示
namespace accessDataBase
{
     ///<summary>
     /// useDataSet 的摘要说明。
     ///</summary>
     public class useDataSet : System.Web.UI.Page
     {
          protected System.Web.UI.WebControls.DataGrid DataGrid1;
    
          private void Page_Load(object sender, System.EventArgs e)
         {
              string connStr="server=ZHB//SQLSERVER;User ID=sa;Pwd=sa;database=northwind";
              SqlConnection myConnection=new SqlConnection(connStr);
              myConnection.Open();
              //用Command对象访问数据库
              string queryStr="select * from Customers";
              SqlDataAdapter myDataAdapter=new SqlDataAdapter(queryStr,myConnection);
              DataSet myDataSet=new DataSet();
              myDataAdapter.Fill(myDataSet,"Customers");
              DataGrid1.DataSource=myDataSet.Tables["Customers"].DefaultView;
              DataGrid1.DataBind();
 
         }
 
          #region Web 窗体设计器生成的代码
          override protected void OnInit(EventArgs e)
         {
              //
              // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
              //
              InitializeComponent();
              base.OnInit(e);
         }
        
         ///<summary>
         /// 设计器支持所需的方法 - 不要使用代码编辑器修改
         /// 此方法的内容。
         ///</summary>
          private void InitializeComponent()
         {   
              this.Load += new System.EventHandler(this.Page_Load);
 
         }
          #endregion
     }
}
(2)将DataSet中改动的数据更新回数据库
namespace accessDataBase
{
     ///<summary>
     /// useDataAdapter 的摘要说明。
     ///</summary>
     public class useDataAdapter : System.Web.UI.Page
     {
          private void Page_Load(object sender, System.EventArgs e)
         {
              // 在此处放置用户代码以初始化页面
              string connStr="server=ZHB//SQLSERVER;User ID=sa;Pwd=sa;database=myWebDB";
              SqlConnection myConnection=new SqlConnection(connStr);
              string queryStr="select * from Customers";
              SqlDataAdapter myDataAdapter=new SqlDataAdapter(queryStr,myConnection);
              DataSet myDataSet=new DataSet();
              myDataAdapter.Fill(myDataSet,"information");
              //在数据集中插入一条新记录
              SqlCommandBuilder mySqlCommandBuilder=new SqlCommandBuilder(myDataAdapter);
              //使用CommandBuilder自动生成SQL语句
              DataRow myDataRow=myDataSet.Tables["information"].NewRow();
              myDataRow["title"]="NewTitle";
              myDataRow["author"]="NewAuthor";
              myDataRow["content"]="NewContent";
              myDataRow["datetime"]=System.DateTime.Now;
              myDataSet.Tables["information"].Rows.Add(myDataRow);
              myDataAdapter.Update(myDataSet,"information");
              Response.Write("新数据已插入!");
     }
 
          #region Web 窗体设计器生成的代码
          override protected void OnInit(EventArgs e)
         {
              //
              // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
              //
              InitializeComponent();
              base.OnInit(e);
         }
        
         ///<summary>
         /// 设计器支持所需的方法 - 不要使用代码编辑器修改
         /// 此方法的内容。
         ///</summary>
          private void InitializeComponent()
         {   
              this.Load += new System.EventHandler(this.Page_Load);
 
         }
          #endregion
     }
}
 
原创粉丝点击