以前得到DataSet的时候都是利用直接写sql语句(适合初学者,希望没有误导你们),例如:
    public static DataSet GetDs(string sqlstr)
    
{
        ds 
= new DataSet();
        sqlconn 
= new SqlConnection();
        sqlconn.ConnectionString 
= System.Configuration.ConfigurationManager.AppSettings["connstr"];
        sqlconn.Open();
        SqlDataAdapter da 
= new SqlDataAdapter(sqlstr, sqlconn);
        da.Fill(ds);
        ConnClose();
        
return ds;
    }
  其中sqlstr我是直接传进去的sql语句。这样虽然也能得到想要的结果,但是毕竟直接写入sql语句被普遍认为是不好的做法。所以我以后就都是用了存储过程。
       我用了两种形式调用存储过程,下面直接给出代码比较直观点:第一种
    public bool DelRole(string rolename)
    
{
        
try
        
{
            SqlConnection sqlConn 
= new SqlConnection();
            sqlConn.ConnectionString 
= System.Configuration.ConfigurationManager.AppSettings["connstr"];
            sqlConn.Open();
            SqlCommand sqlComm 
= new SqlCommand("DelRole", sqlConn);//DelRole为存储过程名
            sqlComm.CommandType = CommandType.StoredProcedure;
            sqlComm.Parameters.Add(
new SqlParameter("@rolename", SqlDbType.VarChar, 50));
            sqlComm.Parameters[
0].Value = rolename;
            sqlComm.ExecuteNonQuery();
            sqlConn.Close();
            
return true;
        }

         
catch(Exception ex)
        
{
            
return false;
         }

     }
       上面代码就是从建立链接到调用存储过程的过程,我之前只是用这种方式去执行存储过程,并不用它返回值,我要得到DataSet是用下面方式得到的:第二种:
    public DataSet DriverNameDetail(int driverid)
    
{
        
string sqlstr;
        DataSet ds 
= new DataSet();
            sqlstr 
= "exec driver_carslist " + driverid;//driver_carslist为存储过程名,driverid为传入参数         
            ds = conn.GetDs(sqlstr);
            
return ds;
}
    这样便可以返回一个dataset,其中GetDs(sqlstr)为本文的第一段代码。
下面是我直接用第一种方法得到DataSet:
                SqlConnection sqlConn = new SqlConnection();
                sqlConn.ConnectionString 
= System.Configuration.ConfigurationManager.AppSettings["connstr"];
                sqlConn.Open();
                SqlDataAdapter sqlDa 
= new SqlDataAdapter("GetAuthListByRole", sqlConn);
                sqlDa.SelectCommand.CommandType 
= CommandType.StoredProcedure;
                sqlDa.SelectCommand.Parameters.Add(
new SqlParameter("@rolename", SqlDbType.VarChar, 50));
                sqlDa.SelectCommand.Parameters[
0].Value = roleName;
                sqlDa.Fill(ds);
                sqlConn.Close();
                
return ds;
posted on 2006-10-16 19:38  Tiu  阅读(5744)  评论(1编辑  收藏  举报