步骤:
- 创建SqlConnection对象
- 创建SqlCommand对象
- 用SqlCommand对象的ExecuteReader方法创建SqlDataReader对象
- 循环读取数据
- 在循环体中读取数据
- 关闭连接
1.步骤一:创建SqlConnection对象
string connstr = “连接字符串”;
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
2.步骤二:定义SQL语句,创建SqlCommand对象
string sql = "sql语句";//常用sql语句包括select、insert、update、delete
SqlCommand comm = new SqlCommand(sql,conn);
3.步骤三:SqlCommand对象的ExecuteReader方法创建SqlDataReader对象
comm.CommandText ="select * from sinfo";
SqlDataReader reader=comm.ExecuteReader();
4.步骤四:循环读取数据
while (reader.Read())
5.步骤五:在循环体中读取数据
//第一种:reader["字段名"]
reader["userName"];
//第二种:reader[索引号]
reader[1];
//第三种:读取已知数据的数据类型
reader.GetString(0);
reader.GetInt32(1);
6.步骤六:关闭连接
conn.Close();
reader.Close();
1.SqlDataReader的主要属性
- HasRows:用来表示SqlDataReader是否包含数据
- FieldCount:记录中字段的个数
- Item:集合对象,以索引值或键值取得记录的字段的集体值
- IsClose:表示SqlDataReader是否关闭
2. SqlDataReader的主要方法
- Close: 关闭SqlDataReader
- Read:读取下一条记录
- GetName:获取指定字段的名称
- GetValue:获取指定字段的数据
- GetValues:获取全部字段的数据
- IsNull:判断字段值是否为NULL
- NextResult:读取下一条结果
实例1:使用SqlDataReader对象实现对表中数据的读取,将表中数据显示在列表框中
控件:label控件、textbox控件、button控件、listBox控件
代码:
private void btnShow_Click(object sender, EventArgs e)//显示所有信息
{
string connstr = "data source=.;database=student;uid=sa;pwd=123456";
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
string sql = "select* from sinfo";
SqlCommand comm = new SqlCommand(sql,conn);
SqlDataReader reader = comm.ExecuteReader();
lstInfo.Items.Add("学号\t\t姓名\t\t性别\t\t年龄");
lstInfo.Items.Add("----------------------------------------------------");
while (reader.Read())
{
string info = string.Format("{0}\t\t{1}\t\t{2}\t\t{3}", reader["snum"], reader[1], reader.GetString(2), reader["sage"]);
lstInfo.Items.Add(info);//在listBox控件中显示查询的数据
}
conn.Close();
reader.Close();
}
实例2:实现登录功能
控件:label控件、textbox控件、button控件
代码:
private void btnIn_Click(object sender, EventArgs e)//实现登录功能
{
string connstr = "data source=.;database=student;uid=sa;pwd=123456";
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
string name = txtUser.Text;
string pass = txtPwd.Text;
string sql = string.Format("select uname,upass from slogin where uname={0}",name);
SqlCommand comm = new SqlCommand(sql,conn);
SqlDataReader reader = comm.ExecuteReader();
if (reader.HasRows)//判断用户名是否有符合项
{
reader.Read();//读取下一条记录
if (pass ==Convert.ToString(reader["upass"])
MessageBox.Show("合法用户,欢迎登陆");
else
{
MessageBox.Show("密码错误,重新输入");
txtPwd.Clear();
txtPwd.Focus();
}
}
else
{
MessageBox.Show("用户不存在,请重新输入!");
txtUser.Clear();
txtUser.Focus();
}
}