/*
    将数据库的操作打包成如下格式
     如果使用select语句,比如
     string strSQL1 = "select 疫苗总量 from vaccStore where name = '"+name+"';";
     如何让下面的函数ExecuteAccessQuery(strSQL1)返回一个查询结果呢?
*/   
     public static object ExecuteAccessQuery(string strSQL)
        {
            string ACCESS_CONN_STRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database3.accdb";            OleDbConnection conn = new OleDbConnection(ACCESS_CONN_STRING);            OleDbCommand cmd = new OleDbCommand(strSQL, conn);            cmd.CommandType = CommandType.Text;            try
            {
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);                DataSet ds = new DataSet();                da.Fill(ds);                return ds;            }
            catch
            {
                conn.Close();
                throw;
            }        }

解决方案 »

  1.   

    public static Dataset ExecuteAccessQueryDataTable dt =  Dataset.Talbes[0];
      

  2.   

    DataTable dt = ds.Talbes[0];
      

  3.   

    用object r=cmd.ExecuteScalar();
    return r;
      

  4.   

           string strSQL1 = "select 疫苗总量 from vaccStore where name = '"+name+"';";
           int i = (int)ExecuteAccessQuery(strSQL1);
           我用了这样的语句,但显示的是没有办法实现类型转化呀。
           
      

  5.   

    主要是我想取出数据库中的数据进行运算,但是无论dataset还是别的,都没法转变成int型数据。
      

  6.   

    string strSQL1 = "select 疫苗总量 from vaccStore where name = '"+name+"';";你这样得到的不是一个值,而是一个表,改为:DataSet ds=(DataSet)ExecuteAccessQuery(strSQL1);int i=Conver.ToInt32(ds.Tables[0].Rows[0][0]);
     
      

  7.   

    你的数据在dataset第一个表的第一行的第一列上,
      

  8.   

    dataset是数据集(多个datatable)
    datatable是数据表(你可以想象成Excel)获取某一单元格的数据:datatable.Rows[行号][列号]
    行号和列号都是从0开始计算,列号也可以写字段名
    如第三行第4列(假设字段名"aaa"):datatable.Rows[2][3]或datatable.Rows[2]["aaa"]
      

  9.   

    改用cmd.ExecuteScalar()执行,返回一个object即可,前有所示。楼主为什么不试一下呢
      

  10.   

    既然你这个代码是为了返回DataSet,那么你为何要把返回类型设置为object.完全没有必要嘛.
    而且,int i = (int)ExecuteAccessQuery(strSQL1);肯定不行的,DataSet转换为object,然后怎么可能转换为int呢?
    想要结果,你就要遍历表嘛,如下
    DataSet ds=ExecuteAccessQuery(strSQL1);;
    foreach(DataRow dr in ds.tables[0].Rows)
    {
        dr["字段名"].ToString();
        dr["字段名"].ToString();
        ... ...
    }