查询代码如下:
                /// <summary>
/// 执行sql并返回记录的1行1列
/// </summary>
/// <param name="sqlCommand"></param>
/// <returns></returns>
public object ExecuteScalar(string sqlCommand)
{
if(TransactionContext.Current!=null) //需要执行事务
{
try
{
                    return TransactionContext.Current.Provider.Database.ExecuteScalar(TransactionContext.Current.DbTransaction, CommandType.Text, sqlCommand);
}
catch(Exception ex)
{
TransactionContext.Current.Rollback();
                    throw new Exception(ex.Message);
}
}
else //不需要事务
{
                return _provider.Database.ExecuteScalar(_provider.ConnectionString, CommandType.Text, sqlCommand);
}
}返回的是Object,这里的Object是不是可以是“DataTable”,也可以是“int”呢?至少可以转换为“int”吧

解决方案 »

  1.   

     当然可以了,因为是Object。根据返回值类型,自己强制转换下就可以了…
      

  2.   

    查询所返回的结果集中第一行的第一列,因为是Object类型,所以可以进行强制转换成自己想要的
      

  3.   

    ExecuteScalar返回一行一列 你看那个执行方法 其实也就是普通的SQL封装 最基本的东西不要忘了
      

  4.   

    大家可能不知道小弟问的是什么问题?public object ExecuteScalar(string sqlCommand)返回的是一个Object。
    问题是这样的:
    这个Object是个Dt吧,怎么可以转换为Int呢???
      

  5.   

    你那个方法返回的是DataTable?注释明明写的是一行一列的值。。
      

  6.   

    查询所返回的结果集中第一行的第一列,Object类型可以进行强制转换。。
      

  7.   

    你哪只眼睛看到返回的是DataTable,自己定义到方法看看就知道了。返回某个值就是了!
      

  8.   

    看你自己返回的是什么,返回的是一行呢 还是一个表,还是一个int值
      

  9.   

    如果你知道这个object是datatable那你可以将它强制转换成DataTable,然后从DataTable中取值:
    if(dt != null && dt.Rows.Count > 0)
    {
        int result = (int)(dt.Rows[0][0].ToString()==""?"0":dt.Rows[0][0].ToString());
    }
      

  10.   

     DEMOpublic static int GetMaxID(string FieldName, string TableName)
            {
                string strsql = "select max(" + FieldName + ")+1 from " + TableName;
                object obj = SqlHelper.GetSingle(strsql);
                if (obj == null)
                {
                    return 1;
                }
                else
                {
                    return int.Parse(obj.ToString());
                }
            }判断if (obj == null)是否为空其实他就是返回一个值 不是DataTable