|
做窗体就是为了跟数据连接起来,我们做的一切都是在为数据服务!而数据库就是用来存数数据的。做好了窗体不能只摆在那看看就完事儿了,必须得用起来,必须用数据来测试一下,将指定的数据传输到指定的数据库。
WinForm连接数据库有这么几个大步骤:
◆ 在WinForm应用程序中制作一个简单的窗体
◆ 准备好要连接的数据库,包括服务器名,数据库名,登录名,和登录密码四部 分
◆ 建立连接(SqlConnection类里面有一个对象方法Open())
◆ 准备好一个字符串,在程序里它时字符串,但对于数据库而言它就是SQL语句 (比如下面例子中的string sql)
◆ 上面步骤都完善以后,将SQL语句发往数据库,并执行这个SQL语句
通过上面这几个步骤,我们就可以将数据库与WinForm连接起来,将客户端的数据发往我们指定的数据库中。
展示一下窗体哈。
下面以插入语句为例做简单说明:
public partial class frmCard : Form
{
public frmCard()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
//读取用户输入的信息
string name = this.txtname.Text;
string sex;
//界面上给了两个选择,默认的选择“男”,如果选择男,则返回0,否则返回1
if (this.rdbman.Checked==true)
{
sex = "0";
}
else
{
sex = "1";
}
string birthday = this.dtbirth.Value.ToString();
string salary = this.txtmoney.Text;
//准备好要连接的数据库
string connString = "server=(local);database=SchoolDB;uid=sa;pwd=514420;";
//创建一个SqlConnection类的对象,将准备好的数据库放入
SqlConnection connection = new SqlConnection(connString);
//打开连接
connection.Open();
//创建一个SqlCommand类的对象,创建一个命令
SqlCommand command = connection.CreateCommand();
//准备一个SQL语句,其中以@开头的在这里只表示一种变量,一种参数。
string sql="Insert into Friends(name, sex, birthday, salary)values(@name,@sex,@birthday,@salary)";
//创建一个参数数组,并且用花括号里面的值来初始化数组
SqlParameter[] parameters = new[]
{
//这里也有个初始化的过程,将name复制给@name,下面的是一样的
new SqlParameter("@name",name),//而小括号右边的name就是程序一开始我们得到的用户输入的值
new SqlParameter("@sex",sex),
new SqlParameter("@birthday",birthday),
new SqlParameter("@salary",salary)
};
//利用对象的属性,把sql字符串放进命令(设置要对数据源执行的SQL语句)
command.CommandText = sql;
//先利用对象的Parameters属性获取参数集,再将参数集的值附加到后面
command.Parameters.AddRange(parameters);
//执行SQL语句:将SQL语句发往数据库中去执行
int x = command.ExecuteNonQuery();
if (x!=0)
{
//如果添加成功,那么给用户提示一下
this.lblRember.Text = "添加成功!";
}
}
}
通过上面几个步骤就架起了WinForm与数据库之间的桥梁,可以将客户端的数据传进数据库,当然肯定也可以将数据库中的数据读到客户端,也就是经常说的下载数据。
P.S:这里面用到了“参数”处理字符串(对于数据库而言是SQL语句)的方法,这样做最大的好处是,我们不用考虑数据库里的数据到底是什么类型的,这位程序员省了不少事,当然也有其他的处理办法,比如字符串的拼接,格式化字符串都可以实现的。这里比较推荐上面写的说这种办法,省事儿嘛!可以看看其他两种方法。
字符串拼接:
//数据库中values后面的值,如果是字符串我们都要用单引号引起来,这里也一样,将一个完整的sql字符串分割成两个相加
string sql = "Insert into Friends(name, sex, birthday, salary)values('" + name + "', sex, birthday, salary)";
command.CommandText = sql;
//执行SQL语句:将SQL语句发往数据库中去执行
int x = command.ExecuteNonQuery();
if (x!=0)
{
//如果添加成功,那么给用户提示一下
this.lblRember.Text = "添加成功!";
}
采用这种方法,我们会这样处理字符串,这很困扰程序员,要考虑哪些数据时字符串类型的,非常考验大家,而且较容易出错。
格式化字符串:
string sql = "Insert into Friends(name, sex, birthday, salary)values('{0}',{1},'{2}',{3}, name , sex, birthday, salary)";
//将sql格式化成标准的字符串形式,这里的{0},{1}表示占位符,用其后的变量的值来填充
string sql2=string.Format(sql);
command.CommandText = sql2;
//执行SQL语句:将SQL语句发往数据库中去执行
int x = command.ExecuteNonQuery();
if (x!=0)
{
//如果添加成功,那么给用户提示一下
this.lblRember.Text = "添加成功!";
}
注意:数据库中的DataTime我们认为是字符串类型的所以上面的{2}要用单引号引住。
这种方式也行,不过还是一样要考虑数据类型的,不够安全啊!
Ajax的姑娘,加油啊!
|
|