数据查询和控件绑定
作者:互联网
一、DataSet对象 - 数据集合
1、特点
- 存储数据的容器 ;
- 数据存储在内存中 ;
- 独立于数据库 ;
- 类似于临时的仓库 ;
SqlConnection、SqlCommand、SqlDataReader、SqlParameter -> 封装在 SqlHelper
2、DataSet的结构
- DataTable : 数据表
- DataRow : 数据行
- DataColumn : 数据列
一个DataSet包含多个DataTable,
每个DataTable包含多个DataRow,
每个DataRow包含多个DataColumn。
3、创建对象(构造方法)
DataSet 对象 = new DataSet() ;
DataSet 对象 = new DataSet("别名") ;
DataTable 对象 = new DataTalbe() ;
DataTable 对象 = new DataTalbe("别名") ;
4、操作:使用DataAdapter对象进行桥接
把数据库中的数据通过DataAdapter对象填充DataSet。
通过DataAdapter对象操作DataSet实现更新数据库。
1)基本操作
//第一:创建DataSet对象
DataSet set = new DataSet();
//第二:创建连接对象
string dbstr = "server=.;uid=sa;pwd=123456;database=xsgl";
SqlConnection conn = new SqlConnection(dbstr);
conn.Open();
//第三:创建SqlDataAdapter对象
string sql = "select * from users";
SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);
//第四:把查询的数据,填充到DataSet对象中
int r = adapter.Fill(set);
//MessageBox.Show(r.ToString());
//第五:查看数据 -> DateSet的结构
//注:一般DateSet中的数据,结合DataGridView或ListView等控件使用
//string name = set.Tables[0].Rows[0]["name"].ToString();
//string name = set.Tables[0].Rows[0][0].ToString();
/*
for (int i=0;i<set.Tables[0].Rows.Count;i++)
{
DataRow row = set.Tables[0].Rows[i];
//MessageBox.Show(row[0].ToString());
MessageBox.Show(row["username"].ToString());
}
*/
foreach (DataRow row in set.Tables[0].Rows)
{
//索引取值
//MessageBox.Show(row[0].ToString());
//字段名称取值
MessageBox.Show(row["username"].ToString());
}
2)多表操作
//第一:创建DataSet对象
DataSet set = new DataSet();
//第二:创建连接对象
string dbstr = "server=.;uid=sa;pwd=123456;database=xsgl";
SqlConnection conn = new SqlConnection(dbstr);
conn.Open();
//第三:创建SqlDataAdapter对象
string sql = @"select * from userinfo;select * from film";
SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);
//第四:把查询的数据,填充到DataSet对象中
int r = adapter.Fill(set);
//第五:把数据显示在DataGridView控件中
//dataGridView1.DataSource = ds.Tables[0];
dataGridView1.DataSource = ds.Tables[1];
3)单表操作
//创建DataTable对象
DataTable dt = new DataTable();
//把查询的数据,填充到DataTable对象中
int r = adapter.Fill(dt);
//第五:把数据显示在DataGridView控件中
dataGridView1.DataSource = dt;
二、DataAdapter对象:SqlDataAdapter
1、用途
用于管理与数据库的连接、执行命令并填充数据集和更新数据库;
数据库与DataSet之间的桥梁,因此一般结合DataSet一起使用。
2、创建对象(构造方法)
SqlDataAdapter 对象 = new SqlDataAdapter() ;
SqlDataAdapter 对象 = new SqlDataAdapter(命令对象) ;
SqlDataAdapter 对象 = new SqlDataAdapter(查询SQL语句,连接对象) ;
SqlDataAdapter 对象 = new SqlDataAdapter(查询SQL语句,连接字符串) ;
3、常用方法
- Fill() : 把查询的数据,填充到DataSet中
- Update() : 把DataSet中的数据,更新到数据库中
在调用Update方法时,必须指定InsertCommand、DeleteCommand、UpdateCommand、SelectCommand属性,DataSet修改的数据才会更新的物理数据库中。当然,我也可以通过以下方法实现,实现自动的创建相关的Command:
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter) ;
三、DataGridView控件
1、作用
以表格的方式显示数据
2、常用属性
- SelectionMode:选择模式
- Cursor:显示光标
- BackgroundColor:背景颜色
- BorderStyle:边框样式
- AllowUserToAddRows:是否允许添加新行
- RowHeadersVisible :是否显示行标题的列
- MultiSelect :是否选择多行、列、单元格
- AllowUserToResizeRows :设置是否允许改变行高
- AllowUserToResizeColumns:设置是否允许改变列宽
- AutoSizeColumnsMode:调整列大小模式----补
- ReadOnly :只读,不可编辑
- ColumnHeadersDefaultCellStyle:设置列标题样式
- DefaultCellStyle:设置单元格式样式
- Columns:编辑列
- DataPropertyName:绑定数据表字段名
- HeaderName:列名
- Resizable
- CurrentRow:选中的当前行
- Rows:行的集合
- Cells:列的集合
SelectedRows:选中行的集合
DataSource:数据源
3、常用方法
4、操作
1)查询
SqlConnection conn = DBHelper.conn;
conn.Open();
string sql = "select * from user";
adapter = new SqlDataAdapter(sql, conn);
DataSet set = new DataSet();
adapter.Fill(set);
dataGridView1.DataSource = set.Tables[0];
2)设置日期格式
dataGridView1.Columns[n].DefaultCellStyle.Format = "yyyy-MM-dd";
3)清除数据
//1.这样会将DataGridView的列也删掉
dataGridView1.DataSource=NULL ;
//2.清除数据,并保留设计的列名
DataTable dt = dataGridView1.DataSource as DataTable;
dt.Rows.Clear();
dataGridView1.DataSource = dt;
//3.循环清除数据
while(datagridview1.rows.count!=0)
{
datagridview1.Rows.RemoveAt(0);
}
四、List容器(集合)
1、特点
1)与数组相似,存放多个数据的容器
2)容量无限大,而数组是固定长度
3)用于存储数据,传递数据
2、使用-创建对象(构造方法)
List<泛型> 对象名 = new List<泛型>() ;
泛型:指定List容器存放数据的种类。
可以是基本数据类型也可以是对象类型。
3、操作
- Add
- Remove/RemoveAt/RemveAll
Count
//foreach循环一般用于循环遍历数组或集合
foreach(数据类型 迭代变量 in 集合或数组)
{
//其中,迭代变量就会循环的指向 集合或数组中的某个元素(数据)
}
4、结合ComboBox和ListBox控件的使用
//第一:获取ListBox1中选中的内容
//string index = listBox1.SelectedItem as string;
//string index = listBox1.SelectedItem.ToString();
//string index = (string)listBox1.SelectedItem;
string item = Convert.ToString(listBox1.SelectedItem);
//第二:获取ListBox1中的全部内容->并转换为List对象接收
//List<string> data = (List<string>)listBox1.DataSource ;
List<string> data = listBox1.DataSource as List<string>;
//第三:删除List集合中的内容
data.Remove(item);
//第四:清空ListBox1控件原来的数据源
listBox1.DataSource = null;
//第五:把List集合重新的设置到ListBox1中
listBox1.DataSource = data;
五、ListView控件
1、作用
以表格的方式显示数据,比DataGridView更多的显示方式。
2、常用属性
- FullRowSelect:设置是否行选择模式(只有在Details视图该属性才有意义)
- GridLines:设置行和列之间是否显示网格线(只有在Details视图该属性才有意义)
- View:获取或设置项在控件中的显示方式,包括五种模式:
- Details
- LargeIcon(默认)
- List
- SmallIcon
- Tile
- MultiSelect:设置是否可以选择多个项
- LargeImageList:大图标集。提示:只在LargeIcon视图使用
- SmallImageList:小图标集。提示:只有在SmallIcon视图使用
- ImageIndex:获取/设置显示图像的索引
- SelectedItems:获取在控件中选定的项
- SelectedIndices:获取在控件中选定的项的索引
- ShowGroups:设置是否以分组方式显示项
- Groups:设置分组的对象集合
3、常用方法
BeginUpdate:避免在调用EndUpdate 方法之前描述控件。当插入大量数据时,可以有效地避免控件闪烁,并能大大提高速度。
EndUpdate:在BeginUpdate 方法挂起描述后,继续描述列表视图控件。(结束更新)
4、常见操作
1)添加
//创建ListViewItem对象并指定第一列的数据(母鸡) - 行
ListViewItem item = new ListViewItem(uid);
//定义字符串数组,存储剩余的字段数据(小鸡)- 列
string[] strs = { name,sex,weight,jiguan,regTime};
//添加剩余的列
item.SubItems.AddRange(strs);
//把ListViewItem添加到ListView控件中
listView1.Items.Add(item);
2)获取内容
string uid = listView1.SelectedItems[0].SubItems[0].Text;
3)默认选中项
if(listView1.Items.Count>0)
{
listView1.Items[0].Selected = true;
}
4)添加列头
//创建列头
ColumnHeader header = new ColumnHeader();
//设置内容
header.Text = "姓名";
//设置列宽
header.Width = 200;
//设置文本对齐
header.TextAlign = HorizontalAlignment.Left;
//添加列头
listView1.Columns.Add(header);
//或直接添加
listView1.Columns.Add("姓名",150,HorizontalAlignment.Left);
listView1.Columns.Add("年龄", 150, HorizontalAlignment.Center);
listView1.Columns.Add("身高", 150, HorizontalAlignment.Right);
5)移除
//遍历选中项
foreach (ListViewItem lvi in listView1.SelectedItems)
{
// 根据索引移除
listView1.Items.RemoveAt(lvi.Index);
//根据项移除
//listView1.Items.Remove(lvi);
}
6)清除
//从控件中移除所有项和列(包括列表头)。
this.listView1.Clear();
//只移除所有的项。
this.listView1.Items.Clear();
//清除列头
listView1.Columns.Clear();
5、事件
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
//判断是否有选中项
if(listView1.SelectedItems.Count>0)
{
//获取当前选中项
ListViewItem lvi = listView1.SelectedItems[0] as ListViewItem;
//输出下标索引为0的子项内容
MessageBox.Show(lvi.SubItems[0].Text);
}
}
六、TreeView控件
1、作用
以树型的方式显示数据。
TreeNode表示树型控件中的某个节点。
2、常用属性
- CheckBoxes:树节点旁是否显示复选框;
- SelectedNode:当前选中的节点
- FullRowSelect:指示突出显示是否跨越树视图控件的整个宽度;
- Nodes:树控件所有节点对象
- Indent:每个子树节点级别的缩进距离;
- ItemHeight:树视图控件中每个树节点的高度;
- LabelEdit:指示是否可以编辑树节点的标签文本;
- Scrollable:指示树视图控件是否在需要时显示滚动条;
- ShowPlusMinus:指示是否在包含子树节点的树节点旁边显示加/减按钮;
- ShowRootLines:指示是否在树视图根处的树节点之间显示连线;
- Name:指示代码中用来标识该对象的名称;
TreeNode常见属性
Checked:节点中的复选框是否选中
FullPath:获取从树根开始到当前选中节点的完整路径
Nodes:当前节点的所有子节点
Text:节点的文本内容
Tag:与节点相关的数据
3、常用方法
ExpandAll():展开所有子节点
CollapseAll():折叠所有节点
4、操作
1)添加一
//添加根节点
treeView1.Nodes.Add("星期一");
treeView1.Nodes.Add("星期二");
treeView1.Nodes.Add("星期三");
2)添加二
//添加一级节点(根节点)
treeView1.Nodes.Add("星期一");
treeView1.Nodes.Add("星期二");
treeView1.Nodes.Add("星期三");
//添加二级节点
treeView1.Nodes[1].Nodes.Add("青菜");
treeView1.Nodes[1].Nodes.Add("萝卜");
//添加三级节点
treeView1.Nodes[1].Nodes[0].Nodes.Add("白萝卜");
treeView1.Nodes[1].Nodes[0].Nodes.Add("胡萝卜");
3)添加三
//创建节点
TreeNode root = new TreeNode();
root.Text = "水果";
TreeNode f1 = new TreeNode("苹果");
TreeNode f2 = new TreeNode("火龙果");
//添加子节点
root.Nodes.Add(f1) ;
root.Nodes.Add(f2) ;
//添加根节点
treeView1.Nodes.Add(root);
4)获取内容
MessageBox.Show(treeView1.SelectedNode.Text);
MessageBox.Show(treeView1.SelectedNode.Tag);
5)删除
//删除选中项
treeView1.SelectedNode.Remove();
//清空
treeView1.Nodes.Clear();
6)修改
treeView1.Nodes[0].Text = "星期天";
treeView1.Nodes[0].Tag = "SUN";
7)展开/折叠
treeView1.ExpandAll();
treeView1.CollapseAll();
8)递归遍历
private void BianLi(TreeNodeCollection treeNodes)
{
foreach (TreeNode node in treeNodes)
{
if(node.Checked==true)
{
MessageBox.Show(node.Text);
}
else
{
BianLi(node.Nodes);
}
}
}
5、事件
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
MessageBox.Show(treeView1.SelectedNode.Text);
}
标签:控件,treeView1,绑定,DataSet,new,Nodes,查询,节点 来源: https://www.cnblogs.com/zing163/p/12468456.html