zoukankan      html  css  js  c++  java
  • Ado.Net基础拾遗一:读取数据

    从数据库中读取数据:

    使用DataReader对象从数据库中读取数据

    首先需要添加几个命名空间

    1 //需要添加的命名空间
    2 using System.Configuration;
    3 using System.Data;
    4 using System.Data.SqlClient;

    配置文件如下

    1 <configuration>
    2     <connectionStrings>
    3         <add name="NorthwindConnectionString" connectionString="Data Source=TANGPRO-PC;Initial Catalog=Northwind;Integrated Security=True"
    4             providerName="System.Data.SqlClient" />
    5     </connectionStrings>
    6 </configuration>

    具体实现代码

     1         //从配置文件中读取数据库连接信息
     2             string conStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
     3             SqlConnection conn = new SqlConnection(conStr);//使用SqlConnection对象与数据库相连接
     4 
     5 
     6             //Command对象使用Connection对象执行SQL查询,它返回的结果通常存储在 DataSet或DataReader中
     7             SqlCommand myCommand = new SqlCommand();
     8             myCommand.CommandText = "SELECT TOP 3 * FROM CUSTOMERS"; //需要执行的SQL语句
     9             myCommand.CommandType = CommandType.Text; //CommandType.Text 表示 SQL 语句是内部文本
    10             myCommand.Connection = conn; //SqlCommand对象的连接对象
    11 
    12             //打开连接
    13             myCommand.Connection.Open();
    14 
    15             //此处存放在 DataReader中
    16             SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
    17 
    18             //将返回的数据绑定到 GridView控件中
    19             GridView1.DataSource = myReader;
    20             GridView1.DataBind();
    21 
    22             //读取完毕后销毁连接
    23             myCommand.Dispose();
    24             conn.Dispose();

    结果:

     使用数据适配器

    •  SqlDataAdaper是一个特殊的类,其作用是在断开连接的DataTable对象和物理数据源之间搭起桥梁
    • 其提供双向的传输机制,它可以在数据源上执行SELECT语句,将结果传送到DataTable对象中,还可以执行标准的INSERT,UPDATE,DELETE语句,从DataTable对象中提取输入的数据
    • SqlDataAdaper类提供了一个Fill()方法,调用Flii()方法将执行SelectCommand属性中提供的命令,获取结果集,并把它复制到DataTable对象中

    实现代码:

     1    protected void Page_Load(object sender, EventArgs e)
     2         {
     3             if (!Page.IsPostBack)
     4             {
     5                 //从配置文件中读取数据库连接信息
     6                 string conStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
     7                 SqlConnection conn = new SqlConnection(conStr);//使用SqlConnection对象与数据库相连接
     8 
     9                 SqlCommand cmd = new SqlCommand();
    10                 cmd.CommandType = CommandType.Text;
    11                 cmd.Connection = conn;
    12                 cmd.CommandText = "SELECT TOP 5 * FROM CUSTOMERS";
    13 
    14                 DataTable myTable = new DataTable();
    15                 
    16                 SqlDataAdapter myAdapter = new SqlDataAdapter();
    17 
    18                 //使用前面创建的 SqlCommand 对象填充 DataAdapter对象的SelectCommand属性
    19                 myAdapter.SelectCommand = cmd;
    20 
    21                 //调用Flii()方法将执行SelectCommand属性中提供的命令,获取结果集,并把它复制到DataTable对象中
    22                 myAdapter.Fill(myTable); //Fill()方法返回一个已填充的DataTable对象
    23 
    24                 GridView1.DataSource = myTable.DefaultView;
    25                 GridView1.DataBind();
    26 
    27                 myAdapter.Dispose();
    28                 cmd.Dispose();
    29                 conn.Dispose();
    30             }
    31 
    32         }

    结果

    使用参数

     1        protected void Page_Load(object sender, EventArgs e)
     2         {
     3             if (!Page.IsPostBack)
     4             {
     5                 string conStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
     6                 SqlConnection conn = new SqlConnection(conStr);
     7 
     8                 SqlCommand myCommand = new SqlCommand();
     9                 myCommand.CommandType = CommandType.Text; 
    10                 myCommand.Connection = conn;
    11                 myCommand.CommandText = "SELECT * FROM CUSTOMERS WHERE CITY = @CITY AND CONTACTNAME= @CONTACT"; //此处使用了参数@CITY @CONTACT
    12 
    13 
    14                 //创建SqlParameter对象,使用参数有助于防止可能的 SQL 注入攻击
    15                 //一般只需要填写ParameterName 和 Value属性即可
    16                 SqlParameter cityPara = new SqlParameter();
    17                 cityPara.ParameterName = "@CITY";  //这个读写属性获取或设置参数的名称
    18                 cityPara.SqlDbType = SqlDbType.VarChar; //获取或设置参数值的SQL Server数据库类型
    19                 cityPara.Size = 15; //这个读写属性获取或设置参数值的大小
    20                 cityPara.Value = "Berlin"; //参数对象提供的值,这个值在运行期间传送给命令中定义的参数
    21 
    22                 SqlParameter contactPara = new SqlParameter();
    23                 contactPara.ParameterName = "@CONTACT";
    24                 contactPara.SqlDbType = SqlDbType.VarChar;
    25                 contactPara.Size = 15;
    26                 contactPara.Value = "Maria Anders";
    27 
    28 
    29                 //向SqlCommand对象中加入参数
    30                 myCommand.Parameters.Add(cityPara);
    31                 myCommand.Parameters.Add(contactPara);
    32 
    33                 myCommand.Connection.Open();
    34 
    35                 SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
    36 
    37                 GridView1.DataSource = myReader;
    38                 GridView1.DataBind();
    39 
    40                 myCommand.Dispose();
    41                 conn.Dispose();
    42             }
    43         }

    第二种加入参数的方法(更简便)

    1            myCommand.CommandText = "SELECT * FROM CUSTOMERS WHERE CITY = @CITY AND CONTACTNAME= @CONTACT"; //此处使用了参数@CITY @CONTACT
    2 
    3                 myCommand.Parameters.Add(new SqlParameter("CITY", "Berlin")); //期中CITY对应 SQL语句中的 @CITY   ,Berlin是其需要输入的值
    4                 myCommand.Parameters.Add(new SqlParameter("CONTACT", "Maria Anders"));

    结果:

  • 相关阅读:
    Atitit 集团与个人的完整入口列表 attilax的完整入口 1. 集团与个人的完整入口列表 1 2. 流量入口概念 2 3. 流量入口的历史与发展 2 1.集团与个人的完整入口列表
    atitit 每季度日程表 每季度流程 v3 qaf.docx Ver history V2 add diary cyar data 3 cate V3 fix detail 3cate ,
    Atitit react 详细使用总结 绑定列表显示 attilax总结 1. 前言 1 1.1. 资料数量在百度内的数量对比 1 1.2. 版本16 v15.6.1 1 1.3. 引入js 2
    Atitit r2017 r3 doc list on home ntpc.docx
    Atitit r2017 ra doc list on home ntpc.docx
    Atiitt attilax掌握的前后技术放在简历里面.docx
    Atitit q2016 qa doc list on home ntpc.docx
    Atitit r7 doc list on home ntpc.docx 驱动器 D 中的卷是 p2soft 卷的序列号是 9AD0D3C8 D:\ati\r2017 v3 r01\
    Atitit 可移植性之道attilax著
    Atitit q2016 q5 doc list on home ntpc.docx
  • 原文地址:https://www.cnblogs.com/TangPro/p/3683092.html
Copyright © 2011-2022 走看看