请问一下!
如何理解C#中的sqlparameter

解决方案 »

  1.   

    表示 SqlCommand 的参数
      

  2.   

    对象而已,包括了sqlcommand需要的各个参数,可以通过带参构造函数实例化
      

  3.   

     //通过 虚拟表 对数据表进行更新
            public bool Update(DataTable userTable)
            {
                SqlConnection con = null;
                try
                {
                    con = new SqlConnection(ConnectionString);
                    con.Open();                string sql = " update " + userTable.TableName + " set ";
                   
                    foreach(DataColumn dr in userTable.Columns)
                    {
                        sql += dr.ColumnName + "=@" + dr.ColumnName + ",";
                   
                    }
                    sql = sql.Substring(0, sql.Length - 1) + " where ";
                              SqlDataAdapter com = new SqlDataAdapter();
                     com.UpdateCommand = new SqlCommand(sql,con);
                                     foreach (DataColumn dc in userTable.Columns)
                     {
                         SqlParameter sp = new SqlParameter("@" + dc.ColumnName, dc.DataType);
                         sp.SourceColumn = dc.ColumnName;
                         com.UpdateCommand.Parameters.Add(sp);                  
                     }
                    
                    DataTable d = this.Select(" exec sp_pkeys "+userTable.TableName);                foreach(DataRow dr in d.Rows)
                    {
                        sql += dr[3].ToString().Trim() + "=@" + dr[3].ToString().Trim() + " and ";
                       
                        //主键不更新
                        com.UpdateCommand.Parameters["@" + dr[3].ToString().Trim()].SourceVersion = DataRowVersion.Original;
                    }
                    sql = sql.Substring(0, sql.Length - 4);                                com.UpdateCommand.CommandText = sql;
     
                    return Convert.ToBoolean(com.Update(userTable));
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message, "错误提示");
                    return false;
                }
                finally
                {
                    if(con.State== ConnectionState .Open)
                    {
                        con.Close();
                    }
                }
            }
         LZ 看下 这个 方法就知道了  这个方法是 通过 datatable  修改数据库表的