C# WPF 快速开发07ADO.NET操作数据库
2013-06-02 17:05
567 查看
//SqlConnection 包含 SqlCommand 包含 SqlDataReader
using (SqlConnection conn = new SqlConnection("Data Source=.; Initial Catalog=mydb;User ID=sa;Password=123456"))
{
conn.Open();
using (SqlCommand cmd =conn.CreateCommand())
{
//cmd.CommandText = "select name,age from T_Student where name='"+m_txtName.Text+"'";//写SQL操作语句,m_txtName是文本控件的变量,这里表示得到用户输入的对应名字的结果集。注意用法name='"+m_txtName.Text+"'
//注意:是用上诉语句,如果用户输入 1' or '1'=1 会造成SQL注入漏洞,即不是得到一个人的数据,而是得到所有人的数据!用下面两行代码代替。
cmd.CommandText = "select name,age from T_Student where name=@name";
cmd.Parameters.Add(new SqlParameter("@name", m_txtName.Text)); //@参数不能用与替换表名、字段名,可以替换insert/delete等条件参数替换
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())//指针初始位置在第一条数据之前,每执行一次Read()指针便往下移动一个位置
{
string name = reader.GetString(0); //获取第一列指针所指的数据。
//注意:获取第几列不是看数据库中的表,而是看查询cmd.CommandText获取到的结果集
int age = reader.GetInt32(1); //Int64表long、bigint
}
}
}
}
Data Set原理:服务器的数据库查询后,用个链表把数据存在本地内存。适用于小数据量
接下来是DataSet的用法,在写完CommandText语句得到结果集后
//SqlDataAdapter可以把SqlCommand查询结果填充到DataSet
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
//DataSet相当于本地的一个复杂集合,需要解析得到命名空间。比较占内存的
DataSet dataset = new DataSet();
adapter.Fill(dataset); //执行cmd并且把SqlCommand查询结果填充到dataset
DataTable table = dataset.Tables[0]; //获取到的数据可以有多张表,但一般就获取一张表然后操作这张表。
DataRowCollection rows = table.Rows; //获取到的表有多个行
//遍历这些行数据
for (int i = 0; i < rows.Count; i++)
{
DataRow row = rows[i]; //取到当前行
int age = (int)row["age"]; //获取数据
string name = (string)row["name"];
}
//PS:程序频繁连接断开数据库确实会降低性能,但就可以增加并发量。比如网站查询,只要查询时才连接数据库,可以及时腾出连接数,提高在线人数的容纳量。
using (SqlConnection conn = new SqlConnection("Data Source=.; Initial Catalog=mydb;User ID=sa;Password=123456"))
{
conn.Open();
using (SqlCommand cmd =conn.CreateCommand())
{
//cmd.CommandText = "select name,age from T_Student where name='"+m_txtName.Text+"'";//写SQL操作语句,m_txtName是文本控件的变量,这里表示得到用户输入的对应名字的结果集。注意用法name='"+m_txtName.Text+"'
//注意:是用上诉语句,如果用户输入 1' or '1'=1 会造成SQL注入漏洞,即不是得到一个人的数据,而是得到所有人的数据!用下面两行代码代替。
cmd.CommandText = "select name,age from T_Student where name=@name";
cmd.Parameters.Add(new SqlParameter("@name", m_txtName.Text)); //@参数不能用与替换表名、字段名,可以替换insert/delete等条件参数替换
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())//指针初始位置在第一条数据之前,每执行一次Read()指针便往下移动一个位置
{
string name = reader.GetString(0); //获取第一列指针所指的数据。
//注意:获取第几列不是看数据库中的表,而是看查询cmd.CommandText获取到的结果集
int age = reader.GetInt32(1); //Int64表long、bigint
}
}
}
}
Data Set原理:服务器的数据库查询后,用个链表把数据存在本地内存。适用于小数据量
接下来是DataSet的用法,在写完CommandText语句得到结果集后
//SqlDataAdapter可以把SqlCommand查询结果填充到DataSet
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
//DataSet相当于本地的一个复杂集合,需要解析得到命名空间。比较占内存的
DataSet dataset = new DataSet();
adapter.Fill(dataset); //执行cmd并且把SqlCommand查询结果填充到dataset
DataTable table = dataset.Tables[0]; //获取到的数据可以有多张表,但一般就获取一张表然后操作这张表。
DataRowCollection rows = table.Rows; //获取到的表有多个行
//遍历这些行数据
for (int i = 0; i < rows.Count; i++)
{
DataRow row = rows[i]; //取到当前行
int age = (int)row["age"]; //获取数据
string name = (string)row["name"];
}
//PS:程序频繁连接断开数据库确实会降低性能,但就可以增加并发量。比如网站查询,只要查询时才连接数据库,可以及时腾出连接数,提高在线人数的容纳量。
相关文章推荐
- C# WPF 快速开发06ADO.NET连接数据库
- ACCP学习旅程之-----使用C#开发数据库应用程序(第七章 用ADO.NET查询和操作数据库)
- 用C#对ADO.NET数据库完成简单操作
- C#.NET 大型企业信息化系统集成快速开发平台 4.1 版本 - 面向数据库SQL语句的应用开发一
- 用C#对ADO.NET数据库完成简单操作
- C# WPF 快速开发05SQL操作语句
- ADO.NET结合C#常见的数据库操作(一)
- 用C#对ADO.NET数据库完成简单操作
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 基于数据库资源的多语言实现
- ADO.NET结合C#常见的数据库操作(二)
- 2.C#实验五:ADO.NET数据库操作练习详解
- C# ADO.NET的五个常用对象及数据库连接操作
- C#操作数据库,分页、执行存储过程等 [一] - ADO.NET入门之中
- WPF C#开发中利用SQLDMO进行数据库备份还原操作中的注意点
- C# ADO.NET数据库操作
- C# WPF 快速开发11导入txt数据到数据库
- C# WPF 快速开发20操作摄像头的开源组件
- C# ADO.NET的五个常用对象及数据库连接操作
- 用C#对ADO.NET数据库完成简单操作的方法
- C# WPF 快速开发08数据库连接配置config