如何把sql语句查询到的值赋值给变量?

例如语句为“select字段Afrom表Bwhereyears=2000andmonths=2”这样在数据库里查到的是这个字段A这个列的一个值,我想把这个值现在赋值给一个... 例如语句为“select 字段A from 表B where years=2000 and months=2”
这样在数据库里查到的是这个字段A这个列的一个值,我想把这个值现在赋值给一个int变量,请问如何实现?是不是一定要用什么存储过程?我对存储过程不是很熟悉?希望大家能给的详细一点的解答,谢谢!
sqlcmd.ExecuteScalar() 这个是返回结果集中的第1行第1列,那如果查询出的结果是多行的话呢?又该怎么写?
展开
 我来答
冯益斌
2008-08-06 · TA获得超过1019个赞
知道小有建树答主
回答量:869
采纳率:100%
帮助的人:995万
展开全部
//多行
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=.;database=你的数据库的名字;uid=sa;pwd=sa的密码;");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.Connection = conn;
cmd.CommandText="select 字段A from 表B where years=2000 and months=2";
conn.Open();
System.Data.SqlDataAdapter sda=new System.Data.SqlDataAdapter(cmd);
DataSet ds=new DataSet();
sda.Fill(ds,"dtResult");
conn.Close();
//结果在ds的dtResult中。
foreach(DataRow dr in ds.Tables["dtResult"])
{
Response.Write(dr["字段A"].ToString()+"<br>");
}
-------------------------------------------------------------
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=.;database=你的数据库的名字;uid=sa;pwd=sa的密码;");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.Connection = conn;
cmd.CommandText="select 字段A from 表B where years=2000 and months=2";
conn.Open();
int i=Convert.ToInt32(cmd.ExecuteScalar().ToString());
conn.Close();
FantasyChump
2008-08-06 · TA获得超过3288个赞
知道大有可为答主
回答量:2127
采纳率:0%
帮助的人:2231万
展开全部
楼上的例子复杂了,不需要那样去实现,可以简化如下:

string dbStr = "data source=127.0.0.1;uid=sa;pwd=fhploverrz;database=BLOG";

int result;

SqlConnection sqlcon = new SqlConnection(dbStr);
SqlCommand sqlcmd = new SqlCommand(sql, sqlcon);

sqlcon.Open();
result=int.Parse(sqlcmd.ExecuteScalar().ToString());
sqlcon.Close();

result就是结果。至于数据库异常,可以在 sqlcon.Open() 这句上加个 try...catch
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wx041
2008-08-06
知道答主
回答量:36
采纳率:0%
帮助的人:16.1万
展开全部
我也不说了,楼上的几位已经回答全了```
不过我是先放在数据集中,然后再从数据集中取出数据,如果你的条件查询出多条数据的话,他们说的就不对了,放入数据集中你想取哪个取哪一个:ds.table[表名].rows[第几行][第几列](例如:int ii = Convert.ToInt32(ds.table[0].rows[0][1])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rainee007
2008-08-06 · TA获得超过263个赞
知道小有建树答主
回答量:652
采纳率:0%
帮助的人:451万
展开全部
如果是int型的值,可以
int val = (int)sqlcmd.ExecuteScalar();
如果不是,
object obj = sqlcmd.ExecuteScalar();

如果是多行结果可以使用DataReader
DataReader reader = sqlcmd.ExecuteReader();

while ( reader.Read() )
{
// 每行的数据处理代码...
// 如要取字段一的值
object obj = reader[0];
// 如果知道字段名,如"name"
string name = (string)reader["name"];
//...
}
reader.Close();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jacky4955
2008-08-06 · 超过15用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:61万
展开全部
问题是 你要把它存在哪里 是后台里面
public static string dbStr = "data source=127.0.0.1;uid=sa;pwd=fhploverrz;database=BLOG";
public static DataSet getDataSet(string sql,Page curPage)
{
DataSet ds = null;
try
{
SqlConnection sqlcon = new SqlConnection(dbStr);
SqlCommand sqlcmd = new SqlCommand(sql, sqlcon);
SqlDataAdapter sqldad = new SqlDataAdapter(sqlcmd);
sqlcon.Open();
ds = new DataSet();
sqldad.Fill(ds);
sqlcon.Close();
}
catch(Exception e)
{
// PublicJS.clsAlert(curPage,"数据库连接错误!");//
}
return ds;
}
ds.table[0].rows[0][0]就是你刚才想要得到的值
老大这个是最基础的东西啊

楼下的说的很好,我这个是一个封装好的东西。所以我就直接复制过来了。因为有时候返回不可能只有一条数据或者只返回一种类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式