using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;public partial class manager_company_manage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
eoda.DAL.DataAccess dal = new eoda.DAL.DataAccess(); //这里添加是成功的
//string sql = "insert into intro_class (intro_class) values(@intro_class)";
//Hashtable ht =new Hashtable();
//ht.Add("@intro_class", "aaaaaaa");
//Response.Write(dal.Update(sql, ht));
///下面数据更新不正确
string sql1 = "update intro_class set intro_class=@intro_class where id=@id";
Hashtable ht1 =new Hashtable();
ht1.Add("@intro_class", "aaaaaaa");
ht1.Add("@id", 3);
Response.Write(dal.Update(sql1, ht1)); }
} dal层
/// <summary>
/// 更新数据
/// </summary>
/// <param name="sql"></param>
/// <param name="ht"></param>
/// <returns></returns>
public int Update(string sql,Hashtable ht)
{
OleDbParameter[] paras = new OleDbParameter[ht.Count];
int i = 0;
foreach (DictionaryEntry h in ht)
{
paras[i] = new OleDbParameter();
paras[i].ParameterName = h.Key.ToString();
paras[i].Value = h.Value;
++i;
}
return DBHelper.ExecuteNonQuery(CommandType.Text, sql, paras);
}
也就是paras[0]也就是@intro_class,可能为你想赋值为@id的3
LZ可以用Dictionary<string,string>,Dictionary插入和读出顺序是一致的
Dictionary<string,object> ht1 =new Dictionary<string,string>();
ht1.Add("@intro_class", "aaaaaaa");
ht1.Add("@id", "3");
Dictionary<string,string> ht1 =new Dictionary<string,string>();
既然分层写了 为什么Sql语句不写在DAl里面
只需要传两个参数到 Dal层 intro_class 和 id
在Dal写Sql语句
Command对象或DataAdapter对象添加参数
SqlDataAdapter sda=new SqlDataAdapter("SqlAndProc_Login_Insert",conn);
sda.SelectCommand.CommandType=CommandType.StoredProcedure;
sda.SelectCommand.Parameters.Add("@name",this.textBox1.Text);
sda.SelectCommand.Parameters.Add("@pwd",this.textBox2.Text);
/// <summary>
/// 更新数据
/// </summary>
/// <param name="sql"></param>
/// <param name="ht"></param>
/// <returns></returns>
public int Update(string sql,Hashtable ht)
{
OleDbParameter[] paras = new OleDbParameter[ht.Count];
int i = 0;
//foreach (DictionaryEntry h in ht)
//{
// paras[i] = new OleDbParameter();
// paras[i].ParameterName = h.Key.ToString();
// paras[i].Value = h.Value;
// ++i;
// }
paras[0] = new OleDbParameter("@intro_class",ht["intro_class"])
paras[1] = new OleDbParameter("@id",ht["id]);
//你先这样写了,看看,成功不,
return DBHelper.ExecuteNonQuery(CommandType.Text, sql, paras);
}