日期:2014-05-18  浏览次数:20538 次

sql取值的问题
select a,b from tab where lid=3
如果这样获取了一行两列值
用.ExecuteScalar()可以获取a列的这个值 如果我想单独获取b列的值 该怎么取?前提是 select a,b from tab where lid=3 这句不变

------解决方案--------------------
如果不改变语句,使用ExecuteScalar无法读取b的值。

如果改变sql,可以改为:
select b,a from tab where lid=3 
或者干脆不要a,改为
select b from tab where lid=3 

如果可以改变读取方式的话可以试着用ExecuteReader()来读取,这样可以读取多列的。
SqlDataReader sdr = cmd.ExecuteReader();
if(sdr.Read())
{
object a = sdr.GetValue(0);
object b = sdr.GetValue(1);
}

------解决方案--------------------
C# code

SqlDataReader sdr=cmd.ExecuteReader();
string b = sdr["b"] as string;

------解决方案--------------------
SqlConnection conn=new SqlConnection(connStr);
SqlDataAdapter da=new SqlDataAdapter(sqlStr);
DataSet ds=new DataSet();
da.fill(ds);
return ds.Table[0].ItemArray[0]["b"].ToString();