其他分享
首页 > 其他分享> > 数据查询和控件绑定

数据查询和控件绑定

作者:互联网

一、DataSet对象 - 数据集合

1、特点

SqlConnection、SqlCommand、SqlDataReader、SqlParameter -> 封装在 SqlHelper

2、DataSet的结构

一个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、常用方法

在调用Update方法时,必须指定InsertCommand、DeleteCommand、UpdateCommand、SelectCommand属性,DataSet修改的数据才会更新的物理数据库中。当然,我也可以通过以下方法实现,实现自动的创建相关的Command:

SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter) ;

三、DataGridView控件

1、作用

以表格的方式显示数据

2、常用属性

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、操作

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、常用属性

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、常用属性

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