博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ADO.NET 基础
阅读量:6823 次
发布时间:2019-06-26

本文共 4984 字,大约阅读时间需要 16 分钟。

 转自:

 

 

1.如果要执行增删改和单个值查询的时候,可以直接让【车间工人】去【中央仓库】做。 

2.如果要从【中央仓库】查询多行货物的时候,有两种方式: 
  2.1可以选择叫一辆【货运卡车】去搬,卡车可以一次性的都搬过来,但【生产车间】一下子用不了,所以卡车就把货先放在【车间临时仓库】,这样车间需要的时候直接拿就可以了。 
  2.2可以让【车间工人】把自己的【摩托车】拿来,骑【摩托车】去仓库拿货,但每次只能拿一行货物,所以需要往返的拿很多次才能拿完。但因为每次只拿一行货物过来,车间就直接使用了,不必存到【车间临时仓库】里。

 

 

 

1.SqlCommand-执行增删改

例题:

static void Main(string[] args)        {            Console.WriteLine("增加数据:");            string ss = Convert.ToString(Console.ReadLine());//字符串使用Console.ReadLine()            AddRecord(ss);        }        public static void AddRecord(string Test)        {            int res  = -1; //准别接收新增受影响行数             string sqlCon = @"Server=.\SQLEXPRESS;database=tangsansan;uid=sa;pwd=sa";             SqlConnection conn = newSqlConnection();             conn.ConnectionString = sqlCon;             string sqlstr = "insert into T_Category(FName) values ('"+ Test + "')";//values里面的string值需要''               SqlCommand cmd = newSqlCommand(sqlstr,conn);             conn.Open();             res = cmd.ExecuteNonQuery(); //负责返回受影响行数                conn.Close(); if(res>0)             {                 Console.WriteLine("新增成功!~~");             }             else               {                 Console.WriteLine("失败啦!");             }                    }

 

 

 

2.SqlCommand-查询单个值(ExecuteScalar)

SqlCommand的ExecuteScalar方法用于执行查询,并返回查询所返回的结果集中第一行的第一列,因为不能确定返回值的类型,所以返回值是object类型

md.CommandText = "select count(*) from T_Users"; int i = Convert.ToInt32(cmd.ExecuteScalar()) 

cmd.CommandText = "select getdate()"; DateTime dt = Convert.ToDateTime(cmd.ExecuteScalar());

例题

static void Main(string[] args)        {            //Console.WriteLine("增加数据:");            //string ss = Convert.ToString(Console.ReadLine());//字符串使用Console.ReadLine()            //AddRecord(ss);            QuerySingle();        }        //查询单个值        public static void QuerySingle()        {            SqlConnection conn = new SqlConnection(sqlCon);            string sqlstr = "select COUNT(*) from  T_Category";            SqlCommand cmd = new SqlCommand(sqlstr, conn);            conn.Open();            //用于执行查询,并返回查询所返回的结果集中第一行的第一列            object obj = cmd.ExecuteScalar();            conn.Close();            Console.WriteLine(obj.ToString());        }

 

 

3.SqlCommand-查询多行(ExecuteReader)

属性 说明
HasRows

是否返回了结果

方法

说明

Read 前进到下一行记录
Close

关闭 DataReader 对象

执行查询

执行有多行结果集的用ExecuteReader

  • SqlDataReader reader = cmd.ExecuteReader();...

      while (reader.Read()) 

      {

           Console.WriteLine(reader.GetString(1)); 

      }

  • reader的GetString、GetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号
  • 为什么用using。Close:关闭以后还能打开。Dispose:直接销毁,不能再次使用。using在出了作用域以后调用Dispose,SqlConnection、FileStream等的Dispose内部都会做这样的判断:判断有没有close,如果没有Close就先Close再Dispose。

例题:

static void Main(string[] args)        {            //Console.WriteLine("增加数据:");            //string ss = Convert.ToString(Console.ReadLine());//字符串使用Console.ReadLine()            //AddRecord(ss);            //QuerySingle();            QueryList();        }        //查询多个值--DataReader,逐行读取        public static void QueryList()        {            SqlConnection conn = new SqlConnection(sqlCon);            string sqlstr = "select * from  T_Category";            SqlCommand cmd = new SqlCommand(sqlstr, conn);            conn.Open();            //获取一个读取器对象
        SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)            {                while (dr.Read())                {                    //Console.WriteLine(dr[0].ToString() + " " + dr[1].ToString());                    Console.WriteLine(dr["FId"].ToString() + " " + dr["FName"].ToString());                }            }            else            {                Console.WriteLine("无属性");            }            dr.Close();//关闭读取器            conn.Close();        }

 

 

4.SqlDataAdapter&数据集-查询多行

DataSet

      SqlDataReader是连接相关的, SqlDataReader中的查询结果并不是放到程序中的,而是放在数据库服务器中,SqlDataReader只是相当于放了一个指针(游标),只能读取当前游标指向的行,一旦连接断开就不能再读取。这样做的好处就是无论查询结果有多少条,对程序占用的内存都几乎没有影响。 

      SqlDataReader对于小数据量的数据来说带来的只有麻烦,优点可以忽略不计。ADO.Net中提供了数据集的机制,将查询结果填充到本地内存中,这样连接断开、服务器断开都不影响数据的读取。 
      DataSet dataset = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dataset); 
      SqlDataAdapter是DataSet和数据库之间沟通的桥梁。数据集DataSet包含若干表DataTable,DataTable包含若干行DataRow。foreach (DataRow row in dataset.Tables[0].Rows)             row["Name"]。

例题:

//适配器读取Adapter        public static void QueryListByAdapter()        {            SqlConnection conn = new SqlConnection(sqlCon);            string sqlstr = "select * from  T_Category";            //创建适配器对象,告诉它要做什么事情,走哪条路            SqlDataAdapter adapter = new SqlDataAdapter(sqlstr, conn);            //创建数据集对象(程序段的临时数据表)            DataSet ds = new DataSet();            //调用Fill填充数据集            adapter.Fill(ds);            DataTable dt = ds.Tables[0];            //循环表中的每一行            for (int i = 0; i < dt.Rows.Count; i++)            {                DataRow dr = dt.Rows[i];//将循环的行赋值给dr对象                Console.WriteLine(dr[0].ToString()+" "+dr[1].ToString());            }        }

转载于:https://www.cnblogs.com/Jenny90/archive/2013/04/13/3018552.html

你可能感兴趣的文章
曲线的奇点
查看>>
【Linux】了解服务器的情况
查看>>
解决Spring配置文件不显示design和source, namespace 问题
查看>>
Efficiently traversing InnoDB B+Trees with the page directory--slot
查看>>
算法笔记_191:历届试题 大臣的旅费(Java)
查看>>
乐为物联网平台初步体验(1)
查看>>
利用ArcGIS水文分析工具提取河网
查看>>
看58同城9月招聘季 大数据显示蓝领薪酬更高
查看>>
跳台阶
查看>>
栈1--出栈序列
查看>>
原码 补码
查看>>
ListView setOnItemClickListener无效原因分析
查看>>
DD测磁盘读写性能
查看>>
CUDA编程(六)进一步并行
查看>>
UML类图和时序图
查看>>
C#中的Form,textBox,Bitmap,PictureBox,Button,WebBrowser
查看>>
Oracle Restart能够用来给Oracle GoldenGate 做 High Availability 使用么?
查看>>
css 五角星 (转)
查看>>
python—networkx:在一张图中画出多个子图
查看>>
Java 泛型 一
查看>>