日期:2014-05-17  浏览次数:20392 次

a.SelectCommand.Parameters["@username"].Value = username;处提示未将对象引用设置到对象的实例。。。。。求
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Web.Configuration;

namespace SkySharp
{
  public partial class WebLogonForm : System.Web.UI.Page
  {
  string constr = "Data Source=admin-pc;Initial Catalog=skyShark;Integrated Security=true";

  protected void Page_Load(object sender, EventArgs e)
  {  
  }
  protected void Button1_Click(object sender, EventArgs e)
  {
  using (SqlConnection con = new SqlConnection(constr))
  {
  DataSet dataSet1 = new DataSet();
  string username, password;
  int datarows = 0;
  try
  {
  SqlCommand cmd = new SqlCommand("select * from dtUsers" + "where Username=@username and Password=@password", con);
  username = txtUserName.Text.Trim();
  cmd.Parameters.Add(new SqlParameter("@username", SqlDbType.NVarChar, 15));
  username = txtUserName.Text.Trim();
  cmd.Parameters.Add("@password", SqlDbType.NVarChar, 15);
  password =txtPassword.Text.Trim();
  con.Open();
  SqlDataAdapter a = new SqlDataAdapter();
  a.SelectCommand.Parameters["@username"].Value = username;
  a.SelectCommand = cmd;

  datarows = a.Fill(dataSet1, "dtUsers");
  if (datarows==0)
  lblMessage.Text = "Incorrect user name";
  else
  {
  if (dataSet1.Tables["dtUsers"].Rows[0][1].ToString().Trim() == password)
  {
  lblMessage.Text = "good";
  }
  else
  lblMessage.Text = "Incorrect password";
  }
  }
  catch (SqlException) { }
  finally
  {
  con.Close();
  }
  }

  }
  }
}

------解决方案--------------------
a.SelectCommand.Parameters["@username"].Value = username;
a.SelectCommand = cmd;换成cmd.Parameters["@username"].Value = username;
------解决方案--------------------
判断if (datarows==0)
  
改成下面的

if(dataSet1.tables.rows.count==0)
lblMessage.Text = "Incorrect user name";