public void insertdata(string tab, string l1, string l1b, string l2, string l2b)
        {
            Open();//这打开数据库
            SqlCommand com = new SqlCommand("Insert into [" + tab + "](" + l1 + "," + l2 + ") values('" + @l1b + "','" + @l2b + "')", con);
            SqlCommand com = new SqlCommand(sql , con);
            SqlParameter[] prams ={
                                 new SqlParameter ("@l1b", SqlDbType.Char,30),
                                 new SqlParameter ("@l2b", SqlDbType.Text )
                          };            prams[0].Value = l1b;
            prams[1].Value = l2b;
            
            foreach (SqlParameter par in prams)
            {
                com.Parameters.Add(par);
            }
            com.ExecuteNonQuery();
            Close();
            Dispose();
        }
这是现在用的方法,但这样太死板.如果要插入更多的参数就又要重写,我想要一个灵活的方法请高手帮个忙.

解决方案 »

  1.   

    最灵活的就是你传一个SqlCommand给这个方法.而不是传tab,l1,l1b,l2,l2b之类的
      

  2.   

    public void insertdata(SqlCommand cmd)
    {
    ...底下自己写吧:)
    }
      

  3.   

    写在web.config里,定义一些参数信息最好用StringBuilder
      

  4.   

    /// <summary>
        /// 执行Sql语句并返回一个bool类型(true:成功执行/false:失败)
        /// </summary>
        /// <param name="Sql">要执行的Sql语句</param>
        /// <param name="Prams">SqlParameter数组</param>
        /// <returns></returns>
        public bool ExecuteNonQuery(string SQL, SqlParameter[] Prams)
        {
            bool Flag = false;
            try
            {
                this.OpenCon();
                SqlCommand cmd = new SqlCommand(SQL, cnn);
                cmd.Parameters.Clear(); //清除SqlParameterCollection项            if (Prams != null)
                {
                    foreach (SqlParameter Sqlpara in Prams)
                    {
                        cmd.Parameters.Add(Sqlpara);
                    }
                }
                int iRow = cmd.ExecuteNonQuery();            if (iRow > 0)
                    Flag = true;
            }
            catch (SqlException ex)
            {
                throw new Exception("数据库执行出错——" + ex.Message.ToString());
            }
            finally
            {
                this.CloseCon();
            }
            return Flag;
        }
      

  5.   

            public bool Insert(string TableName, string[] ValueNames, int[] Values)
            {
                if (!ConnectDataBase())
                {
                    throw new ApplicationException("连接数据库不成功。");
                }
                bool T = true;
               
                string SQL = "insert into " + TableName + " (";
                for (int i = 0; i < ValueNames.Length; i++)
                {
                    if (i + 1 < ValueNames.Length)
                        SQL += ValueNames[i].ToString() + ",";
                    else
                        SQL += ValueNames[i].ToString() + "";
                }
                SQL += ") VALUES ";
                for (int i = 0; i < Values.Length; i++)
                {
                    if (i == 0)
                        SQL += "(" + Values[i];
                    else
                        SQL += "," + Values[i];
                }
                SQL += ")";
                this._command.CommandText = SQL;
                try
                {
                    this._command.ExecuteNonQuery();
                }
                catch (SqlException e)
                {
                    if (_isTransaction)
                        this._sqlTransaction.Rollback();
                    throw (e);
                }
                return T;
            }
      

  6.   

    为什么要在函数里面来写SQL语句呢。
    你直接写一个执行SQL语句的函数那样就不用管你的字段多少个了。
    传进去SQL语句直接执行就可以了。/// <summary>
            /// 执行数据库的插、删、改等语句
            /// </summary>
            /// <param name="StrSQL">待执行的SQL语句</param>
            /// <returns>返回值为布尔形 注:true为成功 false为失败</returns>
            public static bool ExecuteSQL(string StrCmdText)
            {
                OpenConnection();  //打开数据连接函数,自己再写一下
                SqlTransaction ObjTransaction = null;
                SqlCommand ObjCommand = new SqlCommand(StrCmdText, ObjConnection);            try
                {
                    ObjTransaction = ObjConnection.BeginTransaction();
                    ObjCommand.Transaction = ObjTransaction;
                    ObjCommand.ExecuteNonQuery();
                    ObjTransaction.Commit();
                }
                catch (SqlException Ex)
                {
                    ObjTransaction.Rollback();
                    StrErrMessage = "执行数据库失败:" + Ex.Message;
                    return false;
                }
                finally
                {
                    CloseConnection();  //关闭函数,自己再写一下
                }
                return true;
            }
      

  7.   


    你可以提供几个重载.有传SqlCommand,有传sql语句的.等等..
      

  8.   

    支持1楼
    如果传SQL语句的话,SqlParameter不好弄
    或者是有办法,我不知道-_-!