ado.net 学习(一) dataset,table,colum,row基本使用

一.数据格式

  1.快速数据访问 :数据读取 SqlDataRead

SqlDataRead convertTo Model

            using (SqlDataReader reader = SQL_Helper.ExecuteReader(strSql, new SqlParameter("@sid", sid)))
            {
                if (reader.HasRows)
                {
                    int sIdIndex = reader.GetOrdinal("SId");
                    int sNameInex = reader.GetOrdinal("SName");
                    int sAgeIndex = reader.GetOrdinal("SAge");
                    int sEmailIndex = reader.GetOrdinal("SEmail");
                    int sBirthdayIndex = reader.GetOrdinal("SBirthday");
                    int sGenderIndex = reader.GetOrdinal("SGender");

                    if (reader.Read())
                    {
                        model = new StudentsModel
                            {
                                SId = reader.GetInt32(sIdIndex),
                                SName = reader.GetString(sNameInex),
                                SAge = reader.GetInt32(sAgeIndex),
                                SEmail = reader.GetString(sEmailIndex),
                                SBirthday = reader.GetDateTime(sBirthdayIndex),
                                SGender = reader.GetString(sGenderIndex)
                            };
                    }

                }
            }
View Code

 

  2.管理数据和关系:DataSet(table)

总代码:20160130

    class index
    {
           static void Main(string[] args) {
            DataTable dt = CreateDateTable();
            DataSet ds = CreateDataSet("Name");
            outColumnsName(ds.Tables[0]);
            outTable(dt);
        }

        static DataSet CreateDataSet(string Name=null) {
            //1.根据是否有名字
            DataSet ds = (Name != null) ? new DataSet(Name) : new DataSet();
            //2.不要也行
            //DataSet ds = new DataSet();

            DataTable dt = CreateDateTable();
            ds.Tables.Add(dt);
            return ds;
        }

        static DataTable CreateDateTable() {
            DataTable dt = new DataTable("Products");
            //1.委托  列
            dt.Columns.Add(new DataColumn("PId", typeof(int)));
            dt.Columns.Add(new DataColumn("PName", typeof(string)));
            //2.正常使用
            //DataColumn Pid = new DataColumn();
            //Pid.DataType = typeof(int);
            //Pid.ColumnName = "PId";
            //Pid.AutoIncrement = true;
            //dt.Columns.Add(Pid);

            //1.委托 行
            dt.Rows.Add(new object[] { 22, "zzj" });
            dt.Rows.Add(new object[] { 23, "bj" });
    
            //2.正常使用
            //DataRow dr = dt.NewRow();
            //dr["PId"] = 1;
            //dr["PName"] = "zzj";
            //dt.Rows.Add(dr);

            return dt;
        }

        static void outColumnsName(DataTable dt) {
            foreach (DataColumn column in dt.Columns)
                Console.WriteLine(column.ColumnName + " :" + column.DataType);
        }

        static void outTable(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {
                for (int i = 0; i < dt.Columns.Count; i++)
                    Console.Write(dr[i] + "  ");
                Console.WriteLine();

            }
        }

        static void outDataRead(SqlDataReader dr)
        {
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                }
            }
        }
    }
View Code

 

 

       数据表: DataTable(cloum、row)

ado.net 学习(一) dataset,table,colum,row基本使用_第1张图片

             架构的生成:

            为 DataTabk创 建架构有 3种 方式:
              ● 让运行库来完成

(1)运行库生成的架构
前面的DataRow示 例用下面的代码从数据库中选择数据,并填充一个 Dataset类 :
sq1DataAdapter da = new sq△ DataAdapter〈 se△ ect` conn);
DataSet ds = new Dataset(〉
da.Fi△ l(ds` "Customers"); `
这很容
易使用,但它也有几个缺点。 例如,必须利用默认的列名来处理— — 这是可行的,但在
些某况下情
,还要把物理数据库的列a口 PKID)重命名为一个用户友好性更高的名称。
自然
,可 以在 sQL子 旬中给列指定别名,如在 sELECT PD As PersonID FROM Pmon Tab忆
中。 但最好不要在 sQL中 重命名列,因 为列实际上只需要在屏幕上显示一个 “好” 的名称即可。
自动生成 DataTable/DataCol-的 另一个潜在 问题是不能控制运行库为列选择的数据类型。 运
行库可以确定正确的数据类型,但有时需要对此有更多的控制。 例如,为给定的列定义枚举类型 ,
以简化类的用户代码。 如果接受运行库生成的默认列类型,该列就可能是一个 ⒓ 位的整数,而不是
有预定义选项的枚举。
最后,也 是最有可能出的问题是,在使用 自动生成的表时,不 能对 DataTable中 的数据进行类
型安全的访问— — 索引器就会返回 峋 ed的 实例,而不是派生的数据类型。 如果要用类型强制转换
表达式对代码进行修改,就可 以跳过下面的章节 。
View Code

             · 编写代码来创建表

              
             · 使用 XbIL架构生成器

        数据列:columns

          DataColmm对象定义了 DataTable中 某列的属性,如该列的数据类型,该列是否为只读,以及其他属性。 可以在代码中创建列,或者由运行库 自动生成列。

         列的数据类型可以在构造函数中提供,也可以通过设置 DataType属 性来指定。一旦把数据加载到数据表中,就不能改变列的数据类型,否则会抛出一个 ArglmentEx碉 匝on异常。

        数据行:rows

          

二、存储过程:

ado.net 学习(一) dataset,table,colum,row基本使用_第2张图片

定义好命令后 ,就 需要执行它。执行语句有许多方式 ,这 取决于要从命令中返回什么数据。
Command类 提供了下述可执行的命令 :
● EXecuteNonQuery0—
— 执行命令 ,但 不返回任何结果。
● ExccuteRcadcrO— — 执行命令 ,返 回 一 个类型化的 1DataReader。
● Executesc狃 arO— — 执行命令氵返回结果集中第 一 行第 一 列的值。
除了上述命令外 ,sqlCo-and类 也提供了下面的方法 :
● Execute-eaderO—
— 执行命令 ,返 回 一 个XmlReadcr对象 ,它 可以遍历从数据库中返回
的 XML片段。

你可能感兴趣的:(ado.net 学习(一) dataset,table,colum,row基本使用)