在做登录验证连接sql数据库时总是无法实现正常跳转,不知道什么原因 try
{ string strCon = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
//Label3.Text = strCon;
myConn = new SqlConnection(strCon);
myConn.Open();//连接数据库 string strcmd = "SELECT * FROM [student] where UserName='" + strname + "' and UserPwd='" + strpwd + "'"; SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
//Label3.Text = strCon;
sda.Fill(myDataset); //利用adapter对象把数据集塞到dataset中 (--------这里开始有问题了) //Label3.Text = strcmd; if (myDataset.Tables[0].Rows[0] != null)
{
Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
Session["UserName"] = TextBox1.Text;
Session["UserPwd"] = TextBox2.Text;
Response.Redirect("Default2.aspx?dealstr=登录成功"); }
}
catch (Exception e1)
{
Console.WriteLine(e1.ToString());
//Label3.Text = "连接出错!" + e1.ToString();
}
finally
{
myConn.Close();
}
{ string strCon = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
//Label3.Text = strCon;
myConn = new SqlConnection(strCon);
myConn.Open();//连接数据库 string strcmd = "SELECT * FROM [student] where UserName='" + strname + "' and UserPwd='" + strpwd + "'"; SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
//Label3.Text = strCon;
sda.Fill(myDataset); //利用adapter对象把数据集塞到dataset中 (--------这里开始有问题了) //Label3.Text = strcmd; if (myDataset.Tables[0].Rows[0] != null)
{
Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
Session["UserName"] = TextBox1.Text;
Session["UserPwd"] = TextBox2.Text;
Response.Redirect("Default2.aspx?dealstr=登录成功"); }
}
catch (Exception e1)
{
Console.WriteLine(e1.ToString());
//Label3.Text = "连接出错!" + e1.ToString();
}
finally
{
myConn.Close();
}
adapter.SelectCommand = new SqlCommand(
queryString, connection);
adapter.Fill(dataset);
SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
ds = new DataSet();
sda.Fill(ds);
myConn.Close();
{
Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
Session["UserName"] = TextBox1.Text;
Session["UserPwd"] = TextBox2.Text;
Response.Redirect("Default2.aspx?dealstr=登录成功"); } 找了个小miss你看看你填充的 数据是不是null
因为你没有走这个语句
Response.Redirect
sda.Fill(myDataset,"user"); //利用adapter对象把数据集塞到dataset中 (--------这里开始有问题了) \
表明调试时候给删掉了,跟后面不匹配了
sda.Fill(myDataset,"user"); //利用adapter对象把数据集塞到dataset中 (--------这里开始有问题了) \
表名调试时候给删掉了,跟后面不匹配了
你并没有给dataset起别名呀? 这个user从哪里来?
sda.Fill(myDataset,"user");
试试这样,不过,如果"user" 不行的话,就不要用这个名称,因为在MSsql里这个表名是不可以用的
在位置 0 处没有任何行如果有数据 运行到
Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
出现如下错误:
未将对象引用设置到对象的实例首先建议你在
catch (Exception e1)
{
}
中间加入throw new Exception(e1.Message); 抛出错误其次 如果判断是否存在数据可以这样使用 SqlConnection Conn = new SqlConnection(strConn)
Conn.Open();
SqlCommand Comm = new SqlCommand(strSql, Conn);
SqlDataReader dr = Comm.ExecuteReader();//执行数据库操作,返回所查询的值
Conn.Close();
if (dr.Read())//如果读取的到,就说应存在
{
…………//加入你所希望的代码
}
sda.Fill(myDataset,"user"); 表名调试时候给删掉了,跟后面不匹配了。不过又出现了新的问题,验证通过的跳转没有问题,对于没有通过数据库验证的,没有给出响应。
代码如下,还是找不出错误:
protected void Button1_Click(object sender, EventArgs e)
{
string strname = TextBox1.Text;
string strpwd = TextBox2.Text;
DataSet myDataset = null;
SqlConnection myConn = null; if (strname != "" & strpwd!= "")
{
//region部分:访问数据库,验证用户信息,如果存在该账号和密码,则跳转到defaul2.aspx,若没有,则在Label3提示
#region
try
{ string strCon = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
//Label3.Text = strCon;
myConn = new SqlConnection(strCon);
myConn.Open();//连接数据库 string strcmd = "SELECT * FROM [student] where UserName='" + strname + "' and UserPwd='" + strpwd + "'"; SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
//sda.SelectCommand = new SqlCommand(strcmd, myConn); myDataset = new DataSet();
sda.Fill(myDataset,"user"); //利用adapter对象把数据集塞到dataset中
myConn.Close();
if (myDataset.Tables["user"].Rows[0]!=null)
{
//Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
//Label3.Text = strcmd;
Session["UserName"] = strname;
Session["UserPwd"] = strpwd;
Response.Redirect("Default2.aspx?dealstr=登录成功");
}
else
{ //这里的代码没有执行
Label3.Text = "您的输入有误,请重新输入"; }
}
catch (Exception e1)
{
Console.WriteLine(e1.ToString());
//Label3.Text = "连接出错!" + e1.ToString();
}
#endregion
} else
{
Response.Redirect("Default2.aspx?dealstr=注册"); }
}
你应该判断,myDataset.Tables["user"].Rows.count>1
出现问题
{由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。}
你试试用下面的代码 替换上面的代码
Response.Write("<script >{location.href='Default2.aspx?dealstr=注册';}</script>");
myDataset没有实例化吧?
myDataSet=new DataSet();
sda.Fill(myDataset);
这里应该是数据库返回的数据为空,而这个对象并非为null,所以if (myDataset.Tables["user"].Rows[0]!=null)是没有意义的
你应该判断if (myDataset.Tables["user"].Rows[0].IsNull) 或者 Convert.IsDBNull(myDataset.Tables["user"].Rows[0])
当然常用的还是myDataset.Tables["user"].Rows.count>0计算是否有返回数据行
if (!myDataset.Tables["user"].Rows[0].IsNull) 或者if(!Convert.IsDBNull(myDataset.Tables["user"].Rows[0]))