ADO.NET之9-非连接模式,内存中的数据库DataSet,DataTable---ShinePans

DataSet被称作数据集,可以比作内存中的数据库,DataSet为ADO.NET核心,支持ADO.NET断开式,分布式数据方案的核心对象也是实现基于非连接的数据查询核心组件

DataTable常用属性:

属性 说明
Columns 获取属于该表的列的集合
Rows 获取属于该表的行的集合
TableName 获取或设置DataTable的名称

DataTable方法:

方法 说明
AcceptChanges 提交自上次调用AcceptChanges以来对该表进行的所有更改
Clear 清除DataTable内的所有数据
NewRow 创建与该表具有相同架构的新DataRow

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SQLTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ///连接数据库
            DataSet ds = new DataSet();  //创建数据库DataSet对象
            DataTable dt = new DataTable(); //创建数据库DataTable对象
            ds.Tables.Add(dt); //将数据表对象加入数据集对象集合中
            dt.Columns.Add("name", typeof(string));  //向DataTable中添加列
            dt.Columns.Add("address", typeof(string));//向DataTable中添加列
            DataRow dr = dt.NewRow();   //得到数据表,行对象
            dr[0] = "潘潘";
            dr[1] = "武汉";  //向行对象中添加数据
            dt.Rows.Add(dr);
            dt.Rows.Add(new object[] { "潘潘潘", "北京" }); //向数据行中添加新的对象
            foreach(DataRow v in dt.Rows)
            {
                Console.WriteLine("{0} {1}", v[0], v[1]);
            }
            string connection =
                "server=潘尚\\SQLEXPRESS;database=db_test;Trusted_Connection=true";
            SqlConnection sc = new SqlConnection(connection);
        //    sc.ConnectionString = connection;
            try
            {
                sc.Open();  //打开数据库连接
                Console.WriteLine("已经打开数据库连接!");
//START:5.导出数据库中的记录//////////////////////////////////////////////////////////
              /*  SqlCommand cmd = new SqlCommand("SELECT * FROM db_student", sc);
                SqlDataReader sdr = cmd.ExecuteReader(); //执行查找记录命令
                while(sdr.Read())
                {
                    Console.WriteLine("{0}{1}{2}{3}", sdr[0], sdr[1], sdr[2], sdr[3]);
                }  */
//END:5.导出数据库中的记录////////////////////////////////////////////////////////////
//START:4.查询数据库记录//////////////////////////////////////////////////////////////
              /*  SqlCommand cmd = new SqlCommand("SELECT count(*) FROM db_student", sc);
                int i = (int)cmd.ExecuteScalar();//执行查找记录的命令
                Console.WriteLine("表中共有{0}条数据", i.ToString());  */
//END:4.查询数据库记录////////////////////////////////////////////////////////////////
//START:3.修改数据库数据的代码////////////////////////////////////////////////////////
             /*   SqlCommand cmd = new SqlCommand("UPDATE db_student SET student_grade=99 where [email protected]", sc);  //创建SqlCommand对象
                cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "潘";
                int i = cmd.ExecuteNonQuery();
                if (i > 0) Console.WriteLine("修改成功!");   */
//END:3.修改数据库数据的代码/////////////////////////////////////////////////////////
//START:1.删除数据库记录代码段///////////////////////////////////////////////////////
               /* string cmdtext = "DELETE FROM db_student WHERE [email protected]";
                SqlCommand cmd = new SqlCommand(cmdtext, sc);
                cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "潘";
                int i = cmd.ExecuteNonQuery();
                if (i > 0) Console.WriteLine("删除记录成功!"); */
//END:1.删除数据库记录代码段/////////////////////////////////////////////////////////
//START:2.添加记录的代码///////////////////////////////////////////////////////////////
             /*   SqlCommand cmd = new SqlCommand();//创建SqlCommand对象
                cmd.CommandType = CommandType.Text; //设置执行文本命令
                cmd.Connection = sc; //设置对象属性
                cmd.CommandText =
                    "INSERT INTO db_student(student_name,student_age,student_address,student_grade)VALUES(@name,@age,@address,@grade)";
                //添加参数并为参数赋值
                cmd.Parameters.Add("@name", SqlDbType.VarChar, 10).Value = "潘";
                cmd.Parameters.Add("@age", SqlDbType.Int).Value = 19;
                cmd.Parameters.Add("@address", SqlDbType.VarChar).Value = "武汉";
                cmd.Parameters.Add("@grade", SqlDbType.Int).Value = 100;
                int i = cmd.ExecuteNonQuery(); //执行数据库添加记录命令
                if (i > 0) Console.WriteLine("添加记录成功"); */  //控制台输出添加记录
//END:2.添加记录的代码/////////////////////////////////////////////////////////////////
            }
            catch (Exception ex)
            {
                Console.WriteLine("打开数据库错误:{0}", ex.Message);
            }
            finally
            {
                sc.Close();
                Console.WriteLine("数据库连接已关闭!");
            }
            System.Console.ReadLine();
        }
    }
}

结果:

在未打开数据库连接之前,在内存中处理数据

ADO.NET之9-非连接模式,内存中的数据库DataSet,DataTable---ShinePans

时间: 2025-01-20 04:40:08

ADO.NET之9-非连接模式,内存中的数据库DataSet,DataTable---ShinePans的相关文章

模拟在内存中的数据库DataSet相关的类

这篇连着上一篇DataReader相关类. 下面两段话是在msdn官网摘下来:       .NET Framework 数据提供程序是专门为数据操作以及快速.只进.只读访问数据而设计的组件.Connection 对象提供到数据源的连接. 使用 Command 对象可以访问用于返回数据.修改数据.运行存储过程以及发送或检索参数信息的数据库命令. DataReader 可从数据源提供高性能的数据流. 最后,DataAdapter 在 DataSet 对象和数据源之间起到桥梁作用. DataAdap

ADO.NET学习笔记-非链接类

1. DataTable类 DataTable类即是存在于内存中的表格式数据,包括行.列及约束,其中行主要用于存储数据,而列和约束共同组成DataTable的Schema(架构). 2. 创建主键组合列 主键可以一列构成,也可由多列构成,统一起见,ADO.NET在创建主键时,都使用列数组,例: cars.PrimaryKey = new DataColumn[] { vin }; 3. 使用自增长列做为主键 在应用程序中设置自增长列的方法如下: 1) 将列的AutoIncrement属性设为tr

将Oracle数据库设置为归档模式及非归档模式

一.将Oracle数据库设置为归档模式 1)sql>shutdown normal/immediate;2)sql>startup mount;3)sql>alter database archivelog;4)sql>alter database open;5)archive log list; 注意:show parameter log_archive_dest查看归档日志的存放位置. 二.将Oracle数据库设置为非归档模式1).关闭数据库 shutdown immediat

Oracle归档模式和非归档模式

一 什么是Oracle归档模式? Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里.一般数据库至少要有2个联机重做日志组.当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行. 如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档.

ADO.NET数据库之数据库连接---ShinePans

ADO.NET技术主要包括Connection,Command,DataReader,DataAdapter,DateSet,DataTable等六种对象 1).Connection 对象的主要功能是与数据库连接(事物处理也使用此对象) 2).Command  对象用于返回数据,修改数据,运行存储过程以及发送或检索参数信息的数据库命令 3).DataReader 对象主要功能是以只进流的方式从数据库中读取行 4).DataAdapter 对象的主要功能是将数据库中的内容填充到DataSet对象,

内存中OLTP(Hekaton)里的事务日志记录

在今天的文章里,我想详细讨论下内存中OLTP里的事务日志如何写入事务日志.我们都知道,对于你的内存优化表(Memory Optimized Tables),内存中OLTP提供你2个持久性(durability)选项: SCHEMA_ONLY SCHEMA_AND_DATA 今天我不想更多讨论SCHEMA_ONLY,因为使用这个选项,在事务日志里没有发生任何日志(SQL Server 重启后你的数据会丢失).今天我们会专门讲解下SCHEMA_AND_DATA选项的持久性. SCHEMA_AND_D

SQL Server 内存中OLTP内部机制概述(四)

----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory OLTP Internals Overview>:http://technet.microsoft.com/en-us/library/dn720242.aspx 译者水平有限,如有翻译不当之处,欢迎指正. ----------------------------我是分割线---------------

ADO.NET基础巩固-----连接类和非连接类

      最近的一段时间自己的状态还是不错的,早上,跑步,上自习看书,下午宿舍里面编程实战,晚上要么练习代码,要么去打球(在不打就没机会了),生活还是挺丰富的. 关于C#的基础回顾就先到前面哪里,这些要自己在工作中慢慢的去体会,不是说看书就可以掌握的.我们都是从学生时代过来的知道每个人的学习情况是不一样的,所以找到自己的学习节奏是最好不过的. 下面是关于访问数据库[ADO.NET]的学习,之前刚开始学习的时候把这些基本的都过了一遍,但是长时间不使用,一些基本的用法还是会遗忘的.     一:关

ADO.NET 非连接方式进行数据访问

1. 配置 DataAdapter 以检索信息 1.1. DataAdapter ? 数据适配器是数据集与数据源交互的桥梁 –使相当于数据源本地拷贝的数据集可以与数据源之间进行交互. ? 为数据库提供的主要两种数据适配器 – SqlDataAdapter:不经过OLEDB层直接与SQLServer交互,速度较OleDbDataAdapter快. – OleDbDataAdapter:适用于任何可以用OLEDB数据提供者访问的数据源. 1.2. XxxDataAdapter对象模型 ? Comma