using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; 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; using System.Xml.Linq; using System.Text; using System.Data.SqlClient;public partial class login : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { }
protected void imgButtonLogin_Click(object sender, ImageClickEventArgs e) { Session["uname"] = txtUserName.Text.Trim(); clsDB db = new clsDB(); SqlConnection con = new SqlConnection(db.connectionString()); con.Open(); SqlCommand sqlcom = con.CreateCommand(); sqlcom.CommandText = "select count(1) from family where uname='" + txtUserName.Text + "' and pwd='" + txtPassword.Text + "'"; if (Convert.ToInt32(sqlcom.ExecuteScalar()) > 0) { Page.Response.Redirect("Default.aspx"); } else { Response.Write("<script language=javascript>alert('用户名或密码有误!!');location='javascript:history.go(-1)'</script>"); return; } con.Close(); } protected void txtUserName_TextChanged(object sender, EventArgs e) { } } 这就是运行没有提错的代码
if (Convert.ToInt32(sqlcom.ExecuteScalar()) > 0)
{
Page.Response.Redirect("Default.aspx"); }
改成下面的SqlDataAdapter sda = new SqlDataAdapter(sqlcom);
DataTable dtab = new DataTable();
sda.Fill(dtab);
if(dtab.Rows.count>0)
{
Page.Response.Redirect("Default.aspx");
}
试下。
改为
if(!string.IsNullOrEmpty(sqlcom.ExecuteScalar()))
如果像你这样做的话提示的错误是与“string.IsNullOrEmpty(string)”最匹配的重载方法具有一些无效参数和无法从“object”转换为“string” 唉,困扰了很久的问题怎么才能解决呢
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
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;
using System.Xml.Linq;
using System.Text;
using System.Data.SqlClient;public partial class login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void imgButtonLogin_Click(object sender, ImageClickEventArgs e)
{
Session["uname"] = txtUserName.Text.Trim();
clsDB db = new clsDB();
SqlConnection con = new SqlConnection(db.connectionString());
con.Open();
SqlCommand sqlcom = con.CreateCommand();
sqlcom.CommandText = "select count(1) from family where uname='" + txtUserName.Text + "' and pwd='" + txtPassword.Text + "'";
if (Convert.ToInt32(sqlcom.ExecuteScalar()) > 0)
{
Page.Response.Redirect("Default.aspx"); }
else
{
Response.Write("<script language=javascript>alert('用户名或密码有误!!');location='javascript:history.go(-1)'</script>");
return;
} con.Close();
}
protected void txtUserName_TextChanged(object sender, EventArgs e)
{ }
}
这就是运行没有提错的代码
ExecuteScalar的到的是结果表的第一行第一列的值,
按你的sql,应该是个string
所以会exception
protected void imgButtonLogin_Click(object sender, ImageClickEventArgs e)
{
//Session["uname"] = txtUserName.Text.Trim();登录成功后再记录
clsDB db = new clsDB();
SqlConnection con = new SqlConnection(db.connectionString());
con.Open();
SqlCommand sqlcom = con.CreateCommand();
sqlcom.CommandText = ("select * from family where uname='" + txtUserName.Text + "' and pwd='") + txtPassword.Text + "'";
//终点在下面这个语句*******************************
SqlDataReader sqldr = sqlcom.ExecuteReader();
//终点在上面这个语句*******************************
if (sqldr.Read()) {
//如果sql语句读到了匹配的记录,则sqldr.Read()返回True
Session["uname"] = txtUserName.Text.Trim();
//此时记录登录的用户名
//上面这个语句还可以这样写 Session["uname"] = sqldr.Item("uname") 获取读到的数据表记录的 uname 字段的值。 同样可以获取该用户的其它信息。
Page.Response.Redirect("Default.aspx");
}
else {
Response.Write("<script language=javascript>alert('用户名或密码有误!!');location='javascript:history.go(-1)'</script>");
return;
}
}
" //上面这个语句还可以这样写 Session["uname"] = sqldr.Item("uname") 获取读到的数据表记录的 uname 字段的值。 同样可以获取该用户的其它信息"中的代码应是: Session["uname"] = sqldr.Item["uname"];
看看sqlcom.ExecuteScalar())里的值是多少??