关于dataset的问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:09:25
表如下:

PKID Name Regex
1 sEntry http://www.baidu.com
2 pageFormat ?pn=|pageID|
3 pageCount .*\[(\d+)\]

为了减少连接数据库的次数,所以使用了dataset,我是想从dataset里面取数据,比如说我传入一个sEntry(name列)得到http://www.baidu.com(Regex列)

static void Main(string[] args)
{
SqlConnection con = new SqlConnection(Config.LinkDB);
con.Open();
SqlDataAdapter cmd = new SqlDataAdapter("select PKID,Name,Regex From tbRegex", con);
DataSet ds = new DataSet();
cmd.Fill(ds);
con.Close();
GetRegex(ds, "金立 L6");
}

static string GetRegex(DataSet ds, string strName)
{
string strResults="";
DataView dv = ds.Tables[0].Defaul

第一点:
DataView不要ToTable(); 这个浪费时间,DataView在ToTable()的时候,会消耗一定时间,建议不使用

第二点:
DataView直接就可以这样用,如下:
dv[0]["Regex"].ToString();所以可以舍去循环

第三点:
建议将取数据的代码放到一个单独的方法里,其可以接收外部参数,并按照传入的参数取出相应的DataSet,并返回一个DataSet

多个条件的写法是对的

static string GetRegex(DataSet ds, string strName)
{
string strResults="";

// 这里可以不使用View,直接用select方法就可以了。
string filter = "Name='"+strName+"'";
// 多个条件时string filter = "Name='abc' And TypeID=1";
// 只有一条的话
strResults =dt.Select(filter)[0]["Regex"].ToString();

return strResults;

}

DataSet虽然可以减少连接字数,但是其本身是个比较庞大的东西,除非是你要对大量数据进行多操作时选用,一般最好不要用,因为它是需要进行缓存的。

二楼的方法就可以,如果是一条数据就用DataReader()提高效率,其实你直接可以用DataSet.Tables[0].Select();没必要用DataView

视图