zoukankan      html  css  js  c++  java
  • 【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter

    1.使用Connection连接数据库的步骤:

      (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记)

      (2)定义连接字符串。连接SQL Server 数据库时:

      server=服务器名;database=数据库名;uid=用户名;pwd=密码;例如:要连接本机上的StudentManagement数据库,用户名为sa,密码为111

      string connString="server=.;database=StudentManagement;uid=sa;pwd=111;"

      (3).创建Connection对象:

      SqlConnection connStr=new SqlConnection(connSting);

      (4).打开数据库:

      conn.Open();

      (5).对数据库操作完毕后关闭数据库连接

      conn.Close();

      2.Command对象:

      (1).command对象可以用来对数据库发出具体的操作指令,例如对数据库的查询、增加、修改、删除

      (2).创建Command对象,并设置它的属性:

      SqlCommand command =new SqlCommand();

      command.Connection=connection;

      command.CommandText=sqlQuery(sqlQuery为查询语句);

      (3).Command对象的主要方法:

      ExecuteNonQuery:执行后不返回任何行,对于update、insert、delete语句,返回影响的行数对于其他类型的语句,返回值为-1

      ExecuteReader:执行查询语句,返回DataReader对象

      ExecuteScalar:执行查询,并返回查询结果的第一行第一列,忽略其他列或行

      ExecuteXmlreader:将CommandText发送到Connection并生成一个XmlReader

      3.DataReader对象:

      (1).DataReader对象可以从数据库中一只读、只进的方式查询数据,每次的操作只有一个记录保存在内存中

      (2).DataReader对象的主要方法:

      Read:读取下一条数据

      Close:关闭DataReader对象

      (3).使用DataReader提取数据的步骤:

      (a).建立与数据库的连接并打开

      (b).创建一个Command对象

      (c).从Command对象中创建DataReader对象

      (d).使用DataReader读取并显示

      可以使用一个循环利用Read方法便利数据库中行的信息,如果要获取该行中某列的值,只需要使用"["和"]"运算符就可以了

      (e).分别关闭DataReader对象和数据库的连接

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;
    
    namespace ado.netDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                //定义连接字符串
                string connStr = @"server=SUNNYSQLEXPRESS;database=TestDB;UID=sa;PWD=123456";
                //连接数据库
                SqlConnection conn = new SqlConnection(connStr);
                //SQL语句
                string sql = "select * from tb_Students";
                //string sql = "insert into tb_Students(SID, Name, Password, Sex, Age, Address, Phone, QQ) Values('20117750120','小鸟电动车','123','男',21,'HONGKONG','18736000000','1147016165')";
                //string sql = "update tb_Students set SID='20117750119' where SID='20117750120'";
                //string sql = "delete from tb_Students where SID='20117750101'";
                //执行SQL语句
                SqlCommand cmd = new SqlCommand(sql,conn);
                
                conn.Open();
    
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())//read()一直读取下一个数据
                {
                    
                    Console.WriteLine(string.Format("{0}	{1}	{2}	{3}", reader[0],reader[1], reader[2], reader[3]));
                }
                reader.Close();
                //查询数据
                #region
                //ExecuteScalar执行sql查询语句的第一行第一列,忽略其他行其他列。
                //object result = cmd.ExecuteScalar();
                //Console.WriteLine("共查询到有:{0}行数据", result.ToString());
    
                #endregion
                //增加数据
                #region
                //int result = cmd.ExecuteNonQuery();
                //if (result < 1)
                //{
                //    Console.WriteLine("数据插入失败,请检查填写信息,重新操作");
                //}
                //else
                //{
                //    Console.WriteLine("数据插入成功!");
                //}
                #endregion
                //修改数据
                #region
                //int result = cmd.ExecuteNonQuery();
                //if (result < 1)
                //{
                //    Console.WriteLine("数据修改失败,请检查填写信息,重新操作");
                //}
                //else
                //{
                //    Console.WriteLine("数据修改成功!");
                //}
                #endregion
                //删除数据
                #region
                //int result = cmd.ExecuteNonQuery();
                //if (result < 1)
                //{
                //    Console.WriteLine("数据删除失败,请检查填写信息,重新操作");
                //    Console.WriteLine("{0}行收到影响", result);
                //}
                //else
                //{
                //    Console.WriteLine("数据删除成功!");
                //    Console.WriteLine("{0}行收到影响", result);
                //}
                #endregion
    
                conn.Close();
                Console.ReadKey();
    
    
    
            }
        }
    }

    (二)ADO.NET数据库访问技术:

      通过这几天的学习,下面来把有关数据适配器和数据集方面的知识点总结一下:

      一.DataSet 和DataTable:

      数据集在ADO.net中的对象是DataSet,DataSet由一个或多个DataTable组成

      1.DataTable:

      (1).DataTable是表格数据块在内存中的表示,DataTable对象由DataColumns集合以及DataRows集合组成。对数据库检索后,被取回的数据就存放在DataTable对象中

      (2).DataTable对象的主要的属性:

      CaseSensitive:表中的字符串是否区分大小写

      Columns:返回属于这个表的列集合

      DataSet:获得这个表的行集合

      TableName:获得或设置表的名称

      HasChanges:判断数据集是否更改了

      (3).dataTable对象的主要方法:

      Clear:清除DataTable内所有的行数

      NewRow:增加一行

      2、DataSet:数据装置

      (1).DataSet的主要属性:

      Table:可以访问DataSet中表的集合

      (2).DataSet对象的主要方法

      Clear:完全清除DataSet的数据

      Clone:创建与原DataSet具有相同结构和相同行的DataSet

      Copy:创建具有相同结构的新DataSet,但不包含任何行

      (3).填充DataSet数据集:使用数据适配器DataAdapter,DataAdapter对象的Fill()方法可以给DataSet填充数据,例如

      (Fill(参数1,参数2 )第一个参数指定要填充的DataSet,第二个参数是dataSet中要加载数据的Datatable名称)

      (4).使用dataAdapter对象填充DataSet数据库的步骤:

      (a).建立数据库的连接,并打开盖连接

      string connString="、、、";

      SqlConnection mySqlConnection=new SqlConnection(connString);

      mySqlConnection.Open();

      (b).定义要执行的SQl语句

      string sqlQuery="、、、、";

      (c).创建数据集DataSet对象

      DataSet ds=new DataSet();

      (d) .创建数据适配器DataAdapter

      sqlDataAdapter da=new sqlDataAdapter(sqlQuery,mySqlConnection);

      (e).使用DataAdapter对象的Fill()方法填充数据集

      a.Fill(ds,"Table");//DataSet可以被看作是一个虚拟的表或表的集合,这里被填充的表的名称在Fill方法中命名为Table

      (f).关闭数据库连接

      mySqlConnection.Close();

      注意:close与Dispose的区别:Close关闭以后还能打开;Dispose是直接销毁,不能再次使用

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.Web.UI;
     6 using System.Web.UI.WebControls;
     7 using System.Data.SqlClient;
     8 using System.Configuration;
     9 using System.Data;
    10 
    11 namespace ado.netDemo1
    12 {
    13     public partial class Test1 : System.Web.UI.Page
    14     {
    15         protected void Page_Load(object sender, EventArgs e)
    16         {
    17             //string connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString();
    18             //SqlConnection conn = new SqlConnection(connStr);
    19             //conn.Open();
    20             //string sql = "select * from tb_Students";
    21             //SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
    22             //DataSet dataset = new DataSet();
    23             //adapter.Fill(dataset);
    24             //conn.Close();
    25             //GridView1.DataSource = dataset.Tables[0].ToString();
    26             //GridView1.DataBind();
    27 
    28 
    29             GridView1.DataSource = getResult();
    30             this.GridView1.DataBind();
    31         }
    32 
    33         //将数据库信息田中到DataSet的DataTable中
    34         public DataSet getResult()
    35         {
    36             string connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString();
    37             SqlConnection conn = new SqlConnection(connStr);
    38             conn.Open();
    39             string sql = "select * from tb_Students";
    40             //创建数据适配器
    41             SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
    42             //创建数据集对象
    43             DataSet dataset = new DataSet();
    44             //使用适配器对象Fill()方法填充DataSet数据集
    45             adapter.Fill(dataset);
    46             conn.Close();
    47             return dataset;
    48         }
    49     }
    50 }

      (3)访问DataSet数据集:

      (1).访问DataTable:当访问的数据被存放到数据集中后,可以用两种方式访问DataTable:按表名访问和按索引(索引从0开始)访问

      (2).访问行和列

      总结:希望通过小编写的 ADO.NET数据库访问技术的两种方法可以帮助各位网友们在做网站开发的时候,数据库连接时可以得到更好的解答。

  • 相关阅读:
    Vue的响应式
    让html上两个元素在一行显示
    linux的<<命令
    http-only,withCredentials
    axios跨域请求时 withCredentials:true 表示request携带cookie
    异步代码async await阻塞进程的误区——await的是Promise的resolve而不是语句块的执行结束
    理解状态机
    关于express返回值的问题
    axios基本的get/post请求使用方法
    【转】 前端笔记之Vue(四)UI组件库&amp;Vuex&amp;虚拟服务器初识
  • 原文地址:https://www.cnblogs.com/888888CN/p/7115276.html
Copyright © 2011-2022 走看看