连接字符串前面以及说过了,这次的连接字符串将使用一种特别的方式来访问数据库,可以把他理解成通过解析xml取得连接字符串。这次的小练习也会结合离线数据集DataSet来完成这个小练习。
1,先建一个数据库,看下我的表就知道表数据是怎么样了
2.添加引用
3.添加一个.config配置文件,文件内容如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="ConnStr" connectionString=" Data Source=.\SQLEXPRESS;AttachDbFilename=g:\vsworkspace\文件的导入\dataset\hairuan.mdf;Integrated Security=True;User Instance=True"/>
</connectionStrings>
</configuration>
name可以随意取这个属性后面会被使用到
3.写一个工具类测试我们的连接字符串能不能使
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
namespace dataset
{
class SqlUtil
{
public static int MyExecutenoneQuery(string sql,params SqlParameter[] parameter) {
//取得连接字符串ConnStr就是配置文件的name
string connstr = ConfigurationManager.ConnectionStrings["ConnStr"].ToString();
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
using(SqlCommand command=conn.CreateCommand()){
command.CommandText = sql;
//使用foreach取出可变参数
foreach (SqlParameter sqlpara in parameter)
{
//设置参数
command.Parameters.Add(sqlpara);
}
return command.ExecuteNonQuery();
}
}
}
}
}
这个方法比起以前用的那种方式相对好一些
4.弄个界面拖几个控件
5.点击最上面的按钮,让它执行一个动作
private void button1_Click(object sender, EventArgs e)
{
SqlUtil.MyExecutenoneQuery("insert into student(sno,sname) values(@sno,@sname)", new SqlParameter("sno", "2009010503"), new SqlParameter("sname", "张华"));
}
6.测试成功后就可以用下dataset存下数据了
private void button2_Click(object sender, EventArgs e)
{
DataSet dataSet = new DataSet(); //创建一个DataSet
//取得连接字符串
string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ToString();
//取得连接
using (SqlConnection sqlConn = new SqlConnection(connStr))
{
sqlConn.Open();
using(SqlCommand command=sqlConn.CreateCommand())
{
command.CommandText = "select * from student";
SqlDataAdapter adapter = new SqlDataAdapter(command);
//把dateset填充到适配器里
adapter.Fill(dataSet);
}
}
//dataset可能存储了好几张表,所以我们取第一张表
DataTable table = dataSet.Tables[0];
//循环输出数据
for (int i = 0; i < table.Rows.Count;i++ )
{
//逐行取出数据,类似游标
DataRow row = table.Rows[i];
string sname = row["sname"].ToString();
MessageBox.Show(sname);
}
}
到这里程序就写好了, 这里需要注意DataSet不能存储大量数据,数据太多内存就撑爆了。