20141226--C#与SQL的连接
需要一个SQL的数据表,数据库名:xinxiku。表名是:Student。
在C#中创建一个新的WinForm,放入公共控件ListView,和一个Button控件。
并且在ListView属性中的Columns添加列名,列名尽量参照SQL的数据表中的列,以方便观察。
关于ListView的主要属性可以参考上一篇随笔。
创建一个类:xuesheng,定义5个变量并封装。
代码中加粗部分为数据库的链接代码,请注意其中的注释。
namespace WF4.App_Code { public class xuesheng { private string _Sno; public string Sno { get { return _Sno; } set { _Sno = value; } } private string _Sname; public string Sname { get { return _Sname; } set { _Sname = value; } } private string _Ssex; public string Ssex { get { return _Ssex; } set { _Ssex = value; } } private string _Sbirthday; public string Sbirthday { get { return _Sbirthday; } set { _Sbirthday = value; } } private string _Class; public string Class { get { return _Class; } set { _Class = value; } } public List<xuesheng> Selectxuesheng()//创建一个函数, { List<xuesheng> llist = new List<xuesheng>();//初始化List对象 //连接数据库服务器 //server=服务器名/ID;database=数据库名;user=用户登录名(默认sa);pwd=密码" string s = "server=.;database=xinxiku;user=sa;pwd=123"; //using System.Data.SqlClient;需要引用 SqlConnection conn = new SqlConnection(s);//初始化连接对象 conn.Open();//开启数据库连接 //SqlCommand的第三个重载方法, //第一个参数是SQL的查询语句,第二个参数是表示指定的连接 SqlCommand cmd = new SqlCommand("select *from Student",conn); //数据库读取器 SqlDataReader 类似一个指针 SqlDataReader dr =cmd.ExecuteReader();//执行语句,返回结果集, while (dr.Read())//dr.Read使指针从列名处开始,一行行往下挪,每挪一次,读取一行。 {//这里可以根据 列名 选择性的读取 表中的数据 xuesheng xsdata = new xuesheng();//初始化xuesheng用来接收表的数据 xsdata.Sno= dr["Sno"].ToString();//通过dr集合,数据库表列名对应获取一行中的某一列数据 xsdata.Sname = dr["Sname"].ToString();
xsdata.Ssex = dr["Ssex"].ToString(); xsdata.Sbirthday = dr["Sbirthday"].ToString(); xsdata.Class = dr["Class"].ToString(); llist.Add(xsdata);//将读取到的一行的数据添加到llist集合中,下面返回的就是llist注意不要漏掉!! } conn.Close();//最后用完必须关闭数据库连接 return llist; } } }
C#中的代码读取的是SQL表中的数据,并不包括列名,但是注意数据库名、表名、列名都是区分大小写的,
Form3.cs 中的代码
private void button1_Click(object sender, EventArgs e) { listView1.Items.Clear();//清空ListView1中的文本 xuesheng xss = new xuesheng(); List<xuesheng> list = xss.Selectxuesheng();//调用方法Selectxuesheng() //在listView1中写人数据。 if (list != null && list.Count > 0)//list对象为非空值并且元素个数大于0 { for (int i = 0; i < list.Count; i++) { xuesheng xsdata = list[i]; //以下的注释仅表示在第一次的for循环, i 每改变一次换一行。 listView1.Items.Add(xsdata.Sno);//只在第一列。从第二行开始,随后添加的元素将在第一列中往下排, listView1.Items[i].SubItems.Add(xsdata.Sname);//从第二行中的第二列开始, listView1.Items[i].SubItems.Add(xsdata.Ssex);//第二行中的第三列, listView1.Items[i].SubItems.Add(xsdata.Sbirthday);//第二行中的第四列, listView1.Items[i].SubItems.Add(xsdata.Class);//第二行中的第五列, } } }
这里只是查询所有数据,同样可以添加条件查询。将在随后的文章中介绍