3_04_MSSQL课程_Ado.Net_.ExcuteReader()(SQLDataReader)
ExcuteNonQuery(); 返回影响的行数
ExcuteSacalar();返回第一行第一列
ExcuteReader(); Reader,指针,指向表的表头。只是指向,数据仍在数据库中。
SqlDataReader reader=cmd.ExcuteReader();执行完之后,将指针指向数据库的表头(reader对象指向了表的表头行)默认指向表头(标题行)
reader.Read(); 指针往下走一步 ,返回的是bool类型
var str=reader["userId"]读取当前行(数据行一)列的值
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace _02ProvinceCitySelect
{
public partial class MainFrm : Form
{
public MainFrm()
{
InitializeComponent();
} private void MainFrm_Load(object sender, EventArgs e)
{
//加载数据库中的所有的省的数据
string connStr = ConfigurationManager.ConnectionStrings["LJK_SQLServerDBConnectionString"].ConnectionString; //创建链接对象
using (SqlConnection conn =new SqlConnection(connStr))
{
using (SqlCommand cmd =conn.CreateCommand())
{
conn.Open();//***********8
cmd.CommandText =@"select AreaId, AreaName, AreaPid from [dbo].[AreaFull] where AreaPId=0";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while ( reader.Read())
{
//int AreadId = int.Parse(reader["AreaId"].ToString());
//把表格的数据转换成 对象数据
AreaInfo areaInfo = new AreaInfo();
areaInfo.AreaId = int.Parse(reader["AreaId"].ToString());
areaInfo.AreaName = reader["AreaName"].ToString();
areaInfo.AreaPId = int.Parse(reader["AreaPId"].ToString());
//把省的信息放到 ComboBox中。ComboBox显示信息是 Item对象的ToString()
this.cbxProvince.Items.Add(areaInfo);
}
}//end useing reader
}//end useing cmd
}//end using conn this.cbxProvince.SelectedIndex = ;
} private void cbxProvince_SelectedIndexChanged(object sender, EventArgs e)
{
AreaInfo provinceAreaInfo= this.cbxProvince.SelectedItem as AreaInfo;
//判断是否 拿到的城市为空
if (provinceAreaInfo == null)
{
return;
}
//根据省的Id获取所有的城市信息 //加载数据库中的所有的省的数据
string connStr = ConfigurationManager.ConnectionStrings["LJK_SQLServerDBConnectionString"].ConnectionString; //创建链接对象
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();//***********8
cmd.CommandText = @"select AreaId, AreaName, AreaPid from [dbo].[AreaFull] where AreaPId="+provinceAreaInfo.AreaId;
using (SqlDataReader reader = cmd.ExecuteReader())
{
this.cbxCity.Items.Clear();
while (reader.Read())
{
//int AreadId = int.Parse(reader["AreaId"].ToString());
//把表格的数据转换成 对象数据
AreaInfo areaInfo = new AreaInfo();
areaInfo.AreaId = int.Parse(reader["AreaId"].ToString());
areaInfo.AreaName = reader["AreaName"].ToString();
areaInfo.AreaPId = int.Parse(reader["AreaPId"].ToString());
//把省的信息放到 ComboBox中。ComboBox显示信息是 Item对象的ToString()
this.cbxCity.Items.Add(areaInfo);
}
}//end useing reader
}//end useing cmd
}//en
this.cbxCity.SelectedIndex = ; } private void btbExport_Click(object sender, EventArgs e)
{
#region 选择保存文件
string fileName = string.Empty;// 保存的文件名
//让用户选择 要保存的文件路径
using (SaveFileDialog sfd = new SaveFileDialog())
{
if (sfd.ShowDialog() != DialogResult.OK)
{
return; //嵌套的方式,尽量少的嵌套
}
fileName = sfd.FileName;
}
#endregion // 查询数据数据,写入数据
string connStr = ConfigurationManager.ConnectionStrings["LJK_SQLServerDBConnectionString"].ConnectionString;
using (SqlConnection conn =new SqlConnection(connStr))
{
using (SqlCommand cmd =conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "select AreaId, AreaName, AreaPid from [dbo].[AreaFull]";
using (SqlDataReader reader =cmd.ExecuteReader())
{
string tempLine = string.Empty;
using (StreamWriter writer =new StreamWriter(fileName)) //文件流操作的学习
{
while (reader.Read())
{
tempLine = reader["AreaId"] + "," +
reader["AreaName"] + "," +
reader["AreaPId"];
writer.WriteLine(tempLine);//写入文本文件
}
} }
}
}
}
}
}
reader.Read(); 指针继续往下走一行
var str=reader["userAge"]读取当前行(数据行二)列的值
在线的数据库读取,后面还有离线的数据库读取(一次性加载数据库)
3_04_MSSQL课程_Ado.Net_.ExcuteReader()(SQLDataReader)的更多相关文章
- 3_08_MSSQL课程_Ado.Net_子查询
子查询 1.把一个查询结果作为一个表来使用,就是子查询. 2.把一个查询结果作为一个 表达式进行使用就是子查询. (分页Sql)
- 3_07_MSSQL课程_Ado.Net_委托、事件
委托和事件的区别? (1)委托是一个类. 事件是一个委托类型的实列. (2)委托可以在定义委托实列的类的外部触发执行.(不安全) 事件只能能在定义它的类的内部触发执行.(安全),类外部只能注册事件的响 ...
- 3_06_MSSQL课程_Ado.Net_接口、委托、事件、观察者模式
1.接口——实现接口 2.委托.事件(定义事件.注册事件.触发事件) 3.接口和事件的区别,怎么分情况用? 4.观察者模式作为设计模式的一种,也称发布订阅模式. 应对类型的变化和个数的变化. 中介设计 ...
- 3_03_MSSQL课程_Ado.Net_数据导入
数据库数据导出和导入 思路: --思路: 1.找到文件 2.读取文件 3.第一行 忽略 4.insert using System; using System.Collections.Generic; ...
- 3_03_MSSQL课程_Ado.Net_登录复习和ExcuteScalar
SQL注入 ->登陆窗体破解 ->配置文件 ->首先在 app.Config文件中添加 节点,如下: <connectionStrings> <add name=& ...
- 3_02_MSSQL课程_Ado.Net_连接池_连接字符串
连接池技术:是一种对象池技术. 连接对象频繁的开启和关闭操作. innerConnection 先从池子里面拿,如果没有创建新的!!连接池有大小,最大/最小. 提高了连接对象的重用. Asp.ne ...
- 3_01_MSSQL课程_Ado.Net_连接数据库
1. Ado.Net 是一组微软的c#操作数据库的类库. 2.开发人员将界面上的数据(用户的操作和输入的数据)存储到数据库当中.. 3.数据库访问的驱动.即:应用程序和数据库的桥梁. 4.驱动层. S ...
- 3_05_MSSQL课程_Ado.Net_SQLDataAdapter
using System; using System.Collections.Generic; using System.ComponentModel; using System.Configurat ...
- 3_05_MSSQL课程_Ado.Net_DataSet数据集
//创建一个内存的数据集 DataSet ds=new DataSet("LJK"); //创建一张内存表 DataTable dt01=new DataTable("d ...
随机推荐
- 使用Canvas画布的注意事项
1.开始一个路径时要使用beiginPath()方法 ,不然会发生意想不到的事件. 2.图片加载完成后才能按照顺序依次绘图 (巧用onload时间)
- Validation failed for one or more entities. See ‘EntityValidationErrors
try{ context.SaveChanges(); } catch (DbEntityValidationException ex) { var errorMessages = ex.Entity ...
- 重新梳理IT知识之java-05面向对象(一)
一.Java面向对象学习的三条主线: 1.Java类及类的成员:属性.方法.构造器:代码块.内部类 2.面向对象的三大特征:封装性.继承性.多态性.(抽象性) 3.其他关键字:this.super.s ...
- Blockchain资源
程序源码: https://github.com/HuangFJ/pyeth https://www.jianshu.com/p/b72b4eb259b8
- hamming distance(汉明距离)
看knn算法时无意间发现这个算法,但是维基上有错误的示例和python代码...因为汉明距离并不是求相同长度字符串(或相同长度的整数)之间的字符(或数位)差异个数. 正确的详见:https://en. ...
- nfs的原理 安装配置方法 centos6.5
NFS周边 Network File System 作用 像访问本地文件一样去访问NFS服务器上的文件,目录 引用场景: ..1 用户上传的静态文件---图片,视频,用户上传的视频,头像 ..2 中小 ...
- 《Web安全攻防 渗透测试实战指南 》 学习笔记 (五)
Web安全攻防 渗透测试实战指南 学习笔记 (五) 第四章 Web安全原理解析 (一) (一)SQL注入的原理 1.web应用程序对用户输入数据的合法性没有判断. 2.参数用户可控:前端传给 ...
- 【Hutool】工具类之日期时间工具-DateUtil
日期时间工具类 一.依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-al ...
- 实时监听 mysql 操作,Linux 版
效果 场景:某数据库新增了某条记录,服务器可以监听到变化的数据与操作,如 增加一条记录: id = 1009,name=''test,number = 11 服务器监听结果: 实现过程 测试过程:数据 ...
- Java语言特性、加载与执行
[开源.免费.纯面向对象.跨平台] 简单性: 相对而言,例如,Java是不支持多继承的,C++是支持多继承的,多继承比较复杂:C++ 有指针,Java屏蔽了指针的概念.所以相对来说Java是简单的. ...