c#.net如何从数据库表中读取某一列的某一个值,再赋给Session对象?

比如从数据库A 表B
查询 ID=1的这条记录,并且把这条记录name这一列的值赋给Session["name"];
最新回答
幽兰黛尔

2024-10-17 11:16:40

ado.net 本身提供了ExecuteScalar功能。ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列或空引用(如果结果集为空).忽略其他列或行.
示例如下:

using (SqlConnection cn = new SqlConnection())
{
cn.ConnectionString = App.U8DataConn;
cn.Open();

SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;

string sql = "select cNumber From VoucherHistory with (NOLOCK) Where CardNumber=@OutBillCode and cContent is NULL";
cmd.CommandText = sql;
//因为不用创建行集、查找值并关闭行集,所以产生的系统开销非常小与使用 ExecuteReader方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少
object maxNum = cmd.ExecuteScalar();
int newNum = 0;
//判断是否是空值
if (maxNum == System.DBNull.Value || maxNum == null)
{
newNum = 1;
}
else
{
newNum = Convert.ToInt32(maxNum) + 1;
}
Session["maxBillNO"]= newNum.ToString(); //赋给Session对象
}
弦未尽

2024-10-17 08:34:06

using System.Data.SqlClient;//引用

string StrSql,StrMyConn;
StrMyConn="Data Source=服务器地址;Initial Catalog=数据库A;User Id=数据库用户名;Password=数据库密码";//SQL连接字符串
StrSql="select name from 表B where id=1";//T-SQL语句

SqlConnection MyConn = new SqlConnection(StrMyConn);//连接数据库
SqlCommand MyCmd;
SqlDataReader dr;

MyConn.Open();//打开连接
MyCmd=new SqlCommand(StrSql, MyConn);
dr=MyCmd.ExecuteReader();
if(dr.Read())//读取数据
  Session["name"]=dr["name"].ToString();//赋值给Session["name"]
dr.Close();
MyConn.Close();
追问
Session["name"] = cmd.ExecuteScalar().ToString();
这样不行吗?
追答
我查了下资料,这样也可以的,不过我习惯用read方法了