WinForm连接数据库(SQL Server 2008)

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

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

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

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

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

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语句)的方法,这样做最大的好处是,我们不用考虑数据库里的数据到底是什么类型的,这位程序员省了不少事,当然也有其他的处理办法,比如字符串的拼接,格式化字符串都可以实现的。这里比较推荐上面写的说这种办法,省事儿嘛!可以看看其他两种方法。
字符串拼接:

 

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. }

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

 

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的姑娘,加油啊!


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值