WinForm连接数据库(SQL Server 2008)

来源:互联网 发布:js将字符串转换成json 编辑:程序博客网 时间:2024/06/05 20:58

http://www.it165.net/pro/html/201309/7182.html

做窗体就是为了跟数据连接起来,我们做的一切都是在为数据服务!而数据库就是用来存数数据的。做好了窗体不能只摆在那看看就完事儿了,必须得用起来,必须用数据来测试一下,将指定的数据传输到指定的数据库。
WinForm连接数据库有这么几个大步骤:
◆ 在WinForm应用程序中制作一个简单的窗体
◆ 准备好要连接的数据库,包括服务器名,数据库名,登录名,和登录密码四部 分

◆ 建立连接(SqlConnection类里面有一个对象方法Open())

◆ 准备好一个字符串,在程序里它时字符串,但对于数据库而言它就是SQL语句 (比如下面例子中的string sql)
◆ 上面步骤都完善以后,将SQL语句发往数据库,并执行这个SQL语句
通过上面这几个步骤,我们就可以将数据库与WinForm连接起来,将客户端的数据发往我们指定的数据库中。
展示一下窗体哈。

\
 
下面以插入语句为例做简单说明:

view sourceprint?
01.public partial class frmCard : Form
02.{
03.public frmCard()
04.{
05.InitializeComponent();
06.}
07.private void btnOK_Click(object sender, EventArgs e)
08.{
09.//读取用户输入的信息
10.string name = this.txtname.Text;
11.string sex;
12.//界面上给了两个选择,默认的选择“男”,如果选择男,则返回0,否则返回1
13.if (this.rdbman.Checked==true)
14.{
15.sex = "0";
16.}
17.else
18.{
19.sex = "1";
20.}
21.string birthday = this.dtbirth.Value.ToString();
22.string salary = this.txtmoney.Text;
23.//准备好要连接的数据库
24.string connString = "server=(local);database=SchoolDB;uid=sa;pwd=514420;";
25.//创建一个SqlConnection类的对象,将准备好的数据库放入
26.SqlConnection connection = new SqlConnection(connString);
27.//打开连接
28.connection.Open();
29.//创建一个SqlCommand类的对象,创建一个命令
30.SqlCommand command = connection.CreateCommand();
31.//准备一个SQL语句,其中以@开头的在这里只表示一种变量,一种参数。
32.string sql="Insert into Friends(name, sex, birthday, salary)values(@name,@sex,@birthday,@salary)";
33.//创建一个参数数组,并且用花括号里面的值来初始化数组
34.SqlParameter[] parameters = new[]
35.{
36.//这里也有个初始化的过程,将name复制给@name,下面的是一样的
37.new SqlParameter("@name",name),//而小括号右边的name就是程序一开始我们得到的用户输入的值
38.new SqlParameter("@sex",sex),
39.new SqlParameter("@birthday",birthday),
40.new SqlParameter("@salary",salary)
41.};
42.//利用对象的属性,把sql字符串放进命令(设置要对数据源执行的SQL语句)
43.command.CommandText = sql;
44.//先利用对象的Parameters属性获取参数集,再将参数集的值附加到后面
45.command.Parameters.AddRange(parameters);
46.//执行SQL语句:将SQL语句发往数据库中去执行
47.int x = command.ExecuteNonQuery();
48.if (x!=0)
49.{
50.//如果添加成功,那么给用户提示一下
51.this.lblRember.Text = "添加成功!";
52.}
53.}
54.}

通过上面几个步骤就架起了WinForm与数据库之间的桥梁,可以将客户端的数据传进数据库,当然肯定也可以将数据库中的数据读到客户端,也就是经常说的下载数据。
P.S:这里面用到了“参数”处理字符串(对于数据库而言是SQL语句)的方法,这样做最大的好处是,我们不用考虑数据库里的数据到底是什么类型的,这位程序员省了不少事,当然也有其他的处理办法,比如字符串的拼接,格式化字符串都可以实现的。这里比较推荐上面写的说这种办法,省事儿嘛!可以看看其他两种方法。
字符串拼接:

 

view sourceprint?
01.//数据库中values后面的值,如果是字符串我们都要用单引号引起来,这里也一样,将一个完整的sql字符串分割成两个相加
02.string sql = "Insert into Friends(name, sex, birthday, salary)values('" + name + "', sex, birthday, salary)";
03.command.CommandText = sql;
04.//执行SQL语句:将SQL语句发往数据库中去执行
05.int x = command.ExecuteNonQuery();
06.if (x!=0)
07.{
08.//如果添加成功,那么给用户提示一下
09.this.lblRember.Text = "添加成功!";
10.}

采用这种方法,我们会这样处理字符串,这很困扰程序员,要考虑哪些数据时字符串类型的,非常考验大家,而且较容易出错。
格式化字符串:

 

view sourceprint?
01.string sql = "Insert into Friends(name, sex, birthday, salary)values('{0}',{1},'{2}',{3}, name , sex, birthday, salary)";
02.//将sql格式化成标准的字符串形式,这里的{0},{1}表示占位符,用其后的变量的值来填充
03.string sql2=string.Format(sql);
04.command.CommandText = sql2;
05.//执行SQL语句:将SQL语句发往数据库中去执行
06.int x = command.ExecuteNonQuery();
07.if (x!=0)
08.{
09.//如果添加成功,那么给用户提示一下
10.this.lblRember.Text = "添加成功!";
11.}

注意:数据库中的DataTime我们认为是字符串类型的所以上面的{2}要用单引号引住。
这种方式也行,不过还是一样要考虑数据类型的,不够安全啊!

Ajax的姑娘,加油啊!


0 0