using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page 
{
    string s;
    protected void Page_Load(object sender, EventArgs e)
    {
           
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("Data source=192.168.1.103;initial catalog=ChatRoom080218;uid=sa");
        s = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtpassword.Text.ToString(), "MD5");
        SqlDataAdapter sda = new SqlDataAdapter("insert into wangyu values(:user,:pass)",con);
        sda.InsertCommand.Parameters.Add(new SqlParameter(":user",txtusername.Text));
        sda.InsertCommand.Parameters.Add(new SqlParameter(":pass",s.ToString()));
        DataSet ds = new DataSet();
        sda.Fill(ds);
    }
}
这是ASP.NET一个页面文件的后置代码文件,txtusername和txtpassword都是TextBox,我把txtpassword的值加密再插入数据库中,代码执行到sda.InsertCommand.Parameters.Add(new SqlParameter(":user",txtusername.Text));这句时抛异常,说未将对象引用到实例,可是我设置断点调试代码txtusername有值,请教各位这是怎么回事?谢谢了。

解决方案 »

  1.   

    sda.SelectCommand.Parameters.Add("参数",SqlDBType.Varchar,50);//SqlDBType.后面对应你在数据库的数据类型  50  对应长度
    sda.SelectCommand.Parameters["参数"].Value=TextBox的值;
      

  2.   

    一般的只是进行 插入数据的话建议使用SqlConnection  和  SqlCommand组合就可以了,节约资源执行速度快
    SqlConnection conn=new SqlConnection("server=.;database=aa;uid=sa;pwd=;");
    SqlCommand  cmd1=new SqlCommand("adduser",conn);//adduser是存储 过程
    cmd1.CommandType=CommandType.StoredProcedure;//声明执行的是存储过程
    cmd1.Parameters.Add("@name",this.TextBox1.Text.ToLower());
    cmd1.Parameters.Add("@pwd",System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(this.TextBox2.Text.ToLower(),"md5"));
    cmd1.Parameters.Add("@type",this.DropDownList1.SelectedItem.Value);
    conn.Open();
    int j=cmd1.ExecuteNonQuery();
                                    conn.Close();
      

  3.   

    SQL参数应该是@,Oracle的参数才是:
      

  4.   

    楼主看2楼的代码把,你的问题可能是参数里面的参数个数不对,我记得SqlParameter里面的参数形式不是那样,要不楼主就把Add 改成 Addwithvalue试试!
      

  5.   

    SqlDataAdapter sda = new SqlDataAdapter("select * from wangyu ",con); 
    sda.InsertCommand = new SqlCommand("insert into wangyu values(@user,@pass)", conn) 
    sda.InsertCommand.Parameters.Add(new SqlParameter("@user",txtusername.Text)); 
    sda.InsertCommand.Parameters.Add(new SqlParameter("@pass",s.ToString())); 
    DataSet ds = new DataSet(); 
    sda.Fill(ds); http://www.cnblogs.com/meceky/archive/2008/11/22/1338924.html