sqlcmd.CommandText="[qqq]";
sqlcmd.CommandType=CommandType.StoredProcedure;
这样是调用存储过程,qqq是存储过程,如果qqq带有参数,应该怎么写?

解决方案 »

  1.   

    OleDbCommand1.CommandText = "UpdateAuthor";
    OleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure;
    OleDbCommand1.Parameters["au_id"].Value = listAuthorID.Text;
    OleDbCommand1.Parameters["au_lname"].Value = txtAuthorLName.Text;
    OleDbCommand1.Parameters["au_fname"].Value = txtAuthorFName.Text;
    OleDbConnection1.Open();
    OleDbCommand1.ExecuteNonQuery();
    OleDbConnection1.Close();
      

  2.   

    你应该将它写成一个类
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;namespace jsfw
    {
    /// <summary>
    /// DataAccessBase 的摘要说明。
    /// </summary>
    public class DataAccessBase
    {
    public DataAccessBase()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } public DataSet Runprocedure(string strConn,string strSpname,SqlParameter[] arrayParameters,string strTablename)
    {
    SqlConnection myconnection = new SqlConnection(strConn);
    DataSet dsData = new DataSet();
    SqlDataAdapter mycommand = new  SqlDataAdapter(strSpname, myconnection);
    mycommand.SelectCommand.CommandType = CommandType.StoredProcedure;
    SqlParameter arrayParameter = new SqlParameter(); 
    foreach(SqlParameter sq in arrayParameters)
    {
    mycommand.SelectCommand.Parameters.Add(sq);
    }
    mycommand.Fill(dsData, strTablename);
    myconnection.Close();
    return dsData; } public void Runprocedure(string strConn,string strSpname,SqlParameter[] arrayParameters)
    {
    SqlConnection myconnection = new SqlConnection(strConn);
    myconnection.Open();
    SqlCommand mycommand = new SqlCommand(strSpname, myconnection);
    mycommand.CommandType = CommandType.StoredProcedure;
    SqlParameter arrayParameter = new SqlParameter(); 
    foreach(SqlParameter sq in arrayParameters)
    {
    mycommand.Parameters.Add(sq);
    }
    mycommand.ExecuteNonQuery();
    myconnection.Close(); } public int Runprocedure(string strConn,string strSpname,SqlParameter[] arrayParameters,int nEffectedrows)
    {
     
    SqlConnection myconnection = new SqlConnection(strConn);
    myconnection.Open();
    SqlCommand mycommand = new SqlCommand(strSpname, myconnection);
    mycommand.CommandType = CommandType.StoredProcedure;
    SqlParameter arrayParameter = new SqlParameter(); 
    foreach(SqlParameter sq in arrayParameters)
    {
    mycommand.Parameters.Add(sq);
    }
    nEffectedrows = mycommand.ExecuteNonQuery();
    myconnection.Close();
    return nEffectedrows;
       
    } public DataSet Runprocedure(string strConn,string strSpname,string strTablename)
    {
    DataSet dsData = new DataSet();
    SqlConnection myconnection = new SqlConnection(strConn);
    myconnection.Open();
    SqlDataAdapter mycommand = new  SqlDataAdapter(strSpname, myconnection);
    mycommand.SelectCommand.CommandType = CommandType.StoredProcedure;
    mycommand.Fill(dsData,strTablename);
    myconnection.Close();
    return dsData; } public bool CheckEOF(DataSet dsData)
    {
    bool bReturn = false;
    if(dsData != null)
    {
    if(dsData.Tables.Count > 0)
    {
    for(int i = 0 ; i < dsData.Tables.Count ; i++)
    {
    if(dsData.Tables[i].Rows.Count >0)
    {
    bReturn = true;
    break;
    }
    }
    }
    }
    return bReturn;
    } }
    }调用时:
    public class clsAds:DataAccessBase
    {   public string strConn = ConfigurationSettings.AppSetting["connString"].ToString();
    public clsAds()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } public DataSet GetAds(int nPositionID)
    {
    DataSet dsData = new DataSet();
    SqlParameter[] sql = {new SqlParameter("@PositionID", SqlDbType.Int)};
                sql[0].Value = nPositionID;
                dsData = this.Runprocedure(strConn, "sp_GetAds", sql, "ads");
    return dsData; }
    }
      

  3.   

    SqlParameter parameterID = new SqlParameter("@zcID", SqlDbType.VarChar, 50);
    parameterID.Value=Value;
    myCommand.Parameters.Add(parameterID);
    @zcID是存储过程里的变量Value是你输进去的值。
      

  4.   

    http://service.fc18.com/blog/look_blog.aspx?id=84
      

  5.   

    TO:KentYu(潜水的鱼)如果存储过程有输出参数和需要返回值时该怎么办呢?
      

  6.   

    同意   KentYu(潜水的鱼) 
    写到数据层
      

  7.   

    我的数据层,很方便的
    www.jyklzz.net/web/jyk/index.asp
      

  8.   

    按penning(飞鱼)说的试试
    应该是对的
      

  9.   

    感谢 caiyi000(BAICAI),以及楼上的各位!
      

  10.   

    sqlparamenter.direct=out??
    好像是如此,方向向外的参数
    我用的vb,所以只记得大致的了
      

  11.   

    用 SqlParameter啊。
    SqlParameter[] parameters = { new SqlParameter("@StartRow",SqlDbType.Int), new SqlParameter("@StopRow",SqlDbType.Int), new SqlParameter("@AgentID",SqlDbType.Char,20)
                                }
    parameters[0].Value = StartRow;
    parameters[1].Value = StopRow;
    parameters[2].Value = AgentID;dataset = new DataSet();
    sqlcmd.CommandText="Your_Procedure";
    sqlcmd.CommandType=CommandType.StoredProcedure;
    SqlDataAdapter sqldapt = new SqlDataAdapter(sqlcmd);
    sqldapt.Fill(dataset);
    return dataset;
      

  12.   

    用 SqlParameter啊。
    SqlParameter[] parameters = { new SqlParameter("@StartRow",SqlDbType.Int), new SqlParameter("@StopRow",SqlDbType.Int),         new SqlParameter("@AgentID",SqlDbType.Char,20)
                                }
    parameters[0].Value = StartRow;
    parameters[1].Value = StopRow;
    parameters[2].Value = AgentID;dataset = new DataSet();
    sqlcmd.CommandText="Your_Procedure";
    sqlcmd.CommandType=CommandType.StoredProcedure;
    SqlDataAdapter sqldapt = new SqlDataAdapter(sqlcmd);
    sqldapt.Fill(dataset);
    return dataset;