zoukankan      html  css  js  c++  java
  • DataReader的用法程序简析

    // 2015/07/05
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data;
    using System.Data.SqlClient;
    
    namespace DataReaderSample
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 集合,强类型的集合
                System.Collections.Generic.List<StudentModel> list = new List<StudentModel>();
    
                string connectionString = "server=.;database=BookSample;uid=LJK;pwd=123456";
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    string sql = "select ID,StuName ,phone from students";
                    SqlCommand cmd = new SqlCommand(sql,connection);
    
                    // 通过数据库中的游标来辅助查询结果
                    SqlDataReader reader = cmd.ExecuteReader();
    
                    // DataReader 通过 Read 方法来读数据库中的记录
                    while (reader.Read())
                    {
                        Console.WriteLine("成功读取了一条记录");
                        // 读取的数据保存在 DataReader 对象内
                        int stuId = reader.GetInt32(0);
                        string stuName = reader.GetString(1);
                        string Phone = reader.GetString(2);
    
                        //上面的程序还可以用下面的代码代替(第二种方法)
                        //这种方法得出的是object类型,所以要强制转换一下
                        //int stuId = (int)reader[0];(值类型)
                        //string stuName = reader[1] as string;(引用类型)
                        //string Phone = reader[2];
                                          
                        //另外一种方式,下标为字段名,即使select语句修改也无影响
                        //string stuName = reader["StuName"] as string;(引用类型)
    
                        // 将读取的数据表示为对象实例
                        StudentModel model = new StudentModel();
                        model.StuID = stuId;
                        model.Stuname = stuName;
                        model.phone = Phone;
    
                        list.Add(model);
    
                        // 输出字段
                        // Console.WriteLine("StuId:{0}  StuName = {1} Phone = {2}",stuId,stuName,Phone);
                        // Console.WriteLine("StuId:{0}  StuName = {1} ", stuId, stuName);
                    }
                    // 游标也必须关闭
                    reader.Dispose();
                }
                // 当读取完成的时候,我们得到一个集合,其中包含若干个的对象实例
                // 这些对象实例的数据来自数据库
    
                foreach (StudentModel model in list)
                {
                    Console.WriteLine("{0}   {1}   {2}",model.StuID,model.Stuname,model.phone);
                }
                Console.ReadKey();
            }
        }
    }
    /*
    数据库中的数据是 null,与.NET下的null不一致
    数据库中的null在.NET环境下,专门使用一个特殊的类型来表示
        System.DBNull.Value
    可用如下方法解决:
        string region = null;
        if(!reader.IsDBNull(3))
        {
           region = reader.GetString(3);
        }
    //假如为整形方法如下:
    可空类型,只能用于值类型
    int? reportsTo -= null;
    //对于可控类型来说,现在也有两个状态
    //reportsTo.HasValue
    //reportsTo.Value
    
    if(!reader.IsDBNull(4))
    {
        reportsTo = reader.GetInt32(4);
    }
     */
    
    //另一个类
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace DataReaderSample
    {
        public class StudentModel
        {
            private int stuId;
            public int StuID
            {
                get { return stuId;}
                set { stuId = value;}
            }
            public string Stuname { set; get; }
            public string phone { set; get; }
    
        }
    }
    
    
    //仅仅读取第一行第一列的值方法如下
    // 2015/07/05
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data;
    using System.Data.SqlClient;
    
    namespace DataReaderSample
    {
        class Program
        {
            static void Main(string[] args)
            {
                string connectionString = "server=.;database=BookSample;uid=LJK;pwd=123456";
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    string sql = "select ID,StuName ,phone from students";
                    SqlCommand cmd = new SqlCommand(sql, connection);
    
                    //仅仅读取第一行第一列的值
                    object obj = cmd.ExecuteScalar();
                    //如果一条数据都没有读到,那么返回null
                    if (obj != null)
                    {
                        int id = (int)obj;
                        Console.WriteLine("obj = {0}", id);
                    }
                    else
                    {
                        Console.WriteLine("没有读到数据!");
                    }
                    // 通过数据库中的游标来辅助查询结果
                    //SqlDataReader reader = cmd.ExecuteReader();
    
                    // DataReader 通过 Read 方法来读数据库中的记录
                    //if (reader.Read())
                    //{
                    //    int stuid = reader.GetInt32(0);
                    //    Console.WriteLine(stuid);
                    //}
                    //reader.Dispose();
                }
             
                Console.ReadKey();
            }
        }
    }
    

      

  • 相关阅读:
    CentOS7 下部署 Iptables 环境纪录(关闭默认的firewalle)
    Linux系统下root密码遗忘等系统故障的修复方法
    LDAP学习笔记总结
    kvm虚拟化关闭虚拟网卡virbr0的方法
    Gradle使用指南
    Android 注解工具 ButterKnife
    Sublime Text + CTags + Cscope (部分替代Source Insight)
    win + linux + android 多任务分屏
    Ubuntu16.04 安装openjdk-7-jdk
    eclipse + Android Studio 集成 Genymotion 模拟器
  • 原文地址:https://www.cnblogs.com/IamJiangXiaoKun/p/4622556.html
Copyright © 2011-2022 走看看