适应初学C#控件
*****************访问数据库向控件中添加值的步骤及相关代码:
一、创建连接对象:(必须先定义连接字符串,通常在添加类中定义)
public static string strConn = "server=.;database=数据库名;uid=sa;pwd=xfht;";
public static SqlConnection connection对象名 = new SqlConnection(strConn);
二、打开连接:
Connection对象名.Open();
三、创建Command对象:(必须先定义SQL语句)
String SQL="Sql语句";
SqlCommand Command对象名 = new SqlCommand(SQL, DBHelper.connection);
四、对数据库中的数据执行操作:
(一)、若对数据库数据进行增、删、改操作:
Command对象名.ExecuteNonQuery(); //执行非查找语句,返回行数,属int型;
(二)、若对数据库数据进行查找操作;
方法1: Command对象名.ExecuteScalar();//返回查询结果集中的第一行第一列,使用时需要进行显示的类型转换;
方法2:定义DataReader对象,使用Command对象的方法ExecuteReader():(#表示读取器对象名)
(1) SqlDataReader # = cmd.ExecuteReader();
(2) #.Read();//用于读取查询后的数据;
…………补充:
(1) DataReader对象属性的应用:
#.FieldCount;//用于获取查询的列数;
#.HasRows;//对查询结果进行读取,判断是否有数据存在,若返回true,表示有数据存在;
(2) DataReader对象方法的应用:
#.GetName(i);//得到第i列的列名;
#.close();//关闭DataReader对象;
(3) DataReader对象的其他应用:
#[索引或列名]//索引或列名均表示当前进行sql语句后得到的数据表中的列对应的索引和名称;
五、关闭连接;
连接对象名.Close();
**************在连接打开的情况下对listView控件进行操作的相关代码:(#表示读取器对象名,$表示listViewItem对象)
(1) this.listView控件名.Columns.Clear();//用于清空标题列,当运用此方法时,若当前是详细列表视图模式,则会将每一行的数据都给隐藏;
(2) this.llistView控件名.Items.Clear();//用于清空除标题行的其他行的数据;
————静态给llistView控件添加一列:
ColumnHeader & = new ColumnHeader();
&.Text = #.GetName(i);
this.listView控件名.Columns.Add(&);
————根据查询的列数,动态给listView控件添加列:
for (int i = 0; i < #.FieldCount; i++)
{
ColumnHeader & = new ColumnHeader();
//&.Width = 80;(可写可不写,用于定义列的宽度)
//&.TextAlign = HorizontalAlignment.Center;(可写可不写,用于定义文本对齐方式)
&.Text = #.GetName(i);
this.listView控件名.Columns.Add(&);
}
————动态的向listView控件中添加行和数据;
while (#.Read())//当没有写while时表静态的添加数据;
{
ListViewItem $ = new ListViewItem();
$.SubItems[0].Text = #[0].ToString();
//以上两行可以简写为: ListViewItem $ = new ListViewItem(#[0].ToString());
$.SubItems.Add(#[1].ToString());
$.SubItems.Add(#[2].ToString());
$.SubItems.Add(#[3].ToString());
$.SubItems.Add(#[4].ToString());
//添加到listview控件中;
this.listView控件名.Items.Add($);
}
……补充:若listView控件中添加的是查询后的整个表中的每一列,则可使用下方法进行简化添加值:
while (#.Read())
{
ListViewItem $ = new ListViewItem();
$.SubItems[0].Text = #[0].ToString();
for (int i = 1; i < #.FieldCount; i++)
{
$.SubItems.Add(#[i].ToString());
}
this.listView控件名.Items.Add($);
}
#.Close();
————获取listView控件中当前选中的某一行的数据;
ListViewItem $=this.listView控件名.SelectedItems[0];//selectedItems[0]:表示当前可能选择多行的第一个选择的行;
String lie1=$.SubItems[0].Text;
String lie2=$.SubItems[1].Text;
————删除listView控件中当前选中的某一行的数据:
if(this.listView控件名.SelectedItems.Count!=0)
{
this.listView控件名.Items.Remove(this.listView控件名.SelectedItems[0]);
}
*****************访问数据库向dataGridView控件中添加数据
一、创建连接对象:(必须先定义连接字符串,通常在添加类中定义)
public static string strConn = "server=.;database=数据库名;uid=sa;pwd=xfht;";
public static SqlConnection connection对象名 = new SqlConnection(strConn);
二、打开连接:
Connection对象名.Open();
三、创建DataSet对象:( DD表DataSet对象名 )
Dataset DD= new DataSet();
……补充:
(1) DD.Tables[表索引或表名].Rows[行索引][列索引或列名];//访问dataset对象中的表内的数据:
(2) DD.Tables[表索引或表名].Clear();//清空Dataset对象中的表中的数据:
四、创建DataAdapter对象:(在创建对象之前必须先定义Sql语句;SS表示DataAdapter对象名)
String SQL="Sql语句";
SqlDataAdapter SS=new SqlDataAdapter(SQL,DBHelper.connection);
……补充:
DataAdapter对象方法使用:
Fill()//用于填充Dataset对象;
Update()//用于更新数据库中的数据并完成回传;
五、对Dataset对象进行填充数据:
SS.Fill(DD, "自定义表名");
六、设置DataGridView控件的数据源:
this.dataGridView控件名.DataSource = DD.Tables["自定义表名"];
……补充:
DataGridView控件的相关操作:
String s=this.dataGridView控件名.SelectedRows[0].Cells["dataGridView控件中的列名"].Value.ToString();//得到选中的第一行某一列的值;
this.dataGridView控件名.Rows.Romove(this.dataGridView控件名.SelectedRows[0]);//删除当前dataGridView控件中选中的行;
七、更新数据源(补充步骤)(对DataGridView控件中的数据进行了更改并需要保存时使用)
SqlCommandBuilder SqlCommandBuilder = new SqlCommandBuilder(SS);
SS.Update(DD, "自定义表名");(所有需要出现的自定义表名必须相同)
****************
…………补充:
————关于给TreeView控件添加值:
TreeNode root = new TreeNode("爷爷");
this.treeView1.Nodes.Add(root);
//this.treeView1.Nodes.RemoveAt(0);
//添加第二层节点
TreeNode fatherNode = new TreeNode("爸爸");
root.Nodes.Add(fatherNode);
TreeNode motherNode = new TreeNode("妈妈");
this.treeView1.Nodes[0].Nodes.Add(motherNode);
root.Nodes.Add("叔叔");
this.treeView1.Nodes[0].Nodes.Add("大伯");
//给爸爸、妈妈、叔叔三个节点各加一个子节点
this.treeView1.Nodes[0].Nodes[0].Nodes.Add("Jack");
this.treeView1.Nodes[0].Nodes[1].Nodes.Add("tom");
this.treeView1.Nodes[0].Nodes[2].Nodes.Add("city");//第一个Nodes是指第一代,“[]”中的数字表示第一代中对应的节点索引;第二个Nodes是指第二代,“[]”中的数字表示第二代中对应的节点索引;因此这三条语句执行后只有三代;其中第二代的各个节点均有一个子节点;
//全部展开
this.treeView1.ExpandAll();