真是活见鬼了,大家都来看看吧,白送分的题啊

liang4571231 2008-09-30 10:59:12
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox2.Text == string.Empty || TextBox3.Text == string.Empty)
{
TextBox1.Text = "请输入用户名和密码";
return;
}
else
{
SqlConnection conn1 = new SqlConnection("server=.;Database=test1;pwd=123;uid=sa;");
conn1.Open();
string comstr = "select Id from User";
SqlCommand com = new SqlCommand(comstr, conn1);
string uname;
string pword;
int i = 0;

SqlDataReader sdr = com.ExecuteReader();
if (sdr.Read())
{
uname = com.ExecuteReader().GetString(0);
pword = com.ExecuteReader().GetString(1);
if (TextBox2.Text == uname && TextBox3.Text == pword)
{
TextBox1.Text = "登录成功";
i = 1;
return;
}
if (i == 0)
{
TextBox1.Text = "登录失败";
}
}
}

}

错误提示:
...全文
175 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjjzg 2008-09-30
  • 打赏
  • 举报
回复
哈,没事,要真的觉得不好意思了,等明天加点分再结帖也不迟啊
呵呵
看你已经是个贫农了,就算了吧
liang4571231 2008-09-30
  • 打赏
  • 举报
回复
哦,是这样啊,非常谢谢你们啊。分不多,请见谅啊。非常感谢
cyz9977 2008-09-30
  • 打赏
  • 举报
回复
比較好的邏輯

string source = "Data Source=DEMI_ZHANG20\\CHENDB;Initial Catalog=testDB;Persist Security Info=True;User ID=sa;Password=1234567";
string sql = "select * from table1 where username='" + TextBox1.Text.Trim() + "'";
SqlConnection conn = new SqlConnection(source);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
SqlDataReader userRead = cmd.ExecuteReader();
if (userRead != null)
{
while (userRead.Read())
{
if (TextBox2.Text.Trim() == userRead.GetValue(0).ToString())
{

Label3.Text = "ok";
return;
}
else
{
Label3.Text = "password error";
return;
}
}

}
else
{
Label3.Text = "There is no this username";
}
userRead.Close();
conn.Close();
}
catch (OleDbException oe)
{
Label3.Text = oe.Errors[0].Message;
}


注意:表的名字不要跟數據庫裡面的關鍵字有衝突
有衝突的時候表名用【】括起來:string comstr = "select * from [User]";
mjjzg 2008-09-30
  • 打赏
  • 举报
回复
你的代码是否全啊,刚才我不是问你了吗,你关闭数据阅读器和连接了吗
liang4571231 2008-09-30
  • 打赏
  • 举报
回复
谢谢你了,就是你说的这样,是这个错误,我想知道是什么原因啊。大虾们[Quote=引用 15 楼 netwalker2007 的回复:]
select * from User
-------------
select * from [User]
[/Quote]
liang4571231 2008-09-30
  • 打赏
  • 举报
回复
我按照12楼上说的做了还是有错,错误也一样,“关键字‘User’附近有语法错误。”
有谁能把我代码考到你电脑试试吗?你具体看下啊,是不是和我的问题一样啊。拜谢了!


protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox2.Text == string.Empty || TextBox3.Text == string.Empty)
{
TextBox1.Text = "请输入用户名和密码";
return;
}
else
{
SqlConnection conn1 = new SqlConnection("server=.;Database=test1;pwd=123;uid=sa;");
conn1.Open();
string comstr = "select * from User";
SqlCommand com = new SqlCommand(comstr, conn1);
string uname;
string pword;
int i = 0;

SqlDataReader sdr = com.ExecuteReader();
if (sdr.Read())
{
uname = com.ExecuteReader().GetString(0);
pword = com.ExecuteReader().GetString(1);
if (TextBox2.Text == uname && TextBox3.Text == pword)
{
TextBox1.Text = "登录成功";
i = 1;
return;
}
if (i == 0)
{
TextBox1.Text = "登录失败";
}
}
}
}
takako_mu 2008-09-30
  • 打赏
  • 举报
回复
如果你非要用你那種方式寫的話

就是

if(……)//if 1
{
while (……)
{
if(……)//if 2
}
}

因為while是直接循環到最後一條,如果沒有if 2的話說白了就是拿DB中最後一條數據和兩個textbox.text對比
你要一條一條的讀出來對比~~
速度是可想而知的慢啊。。。
netwalker2007 2008-09-30
  • 打赏
  • 举报
回复
select * from User
-------------
select * from [User]
takako_mu 2008-09-30
  • 打赏
  • 举报
回复
你這個應該是少了while的問題。
建議你換一種寫法,這樣寫,如果數據量大的話會讀死人的。。。。


//下面的這些可以寫到class裡面去,然後在頁面中調用。
public static readonly string connstr = ConfigurationManager.ConnectionStrings["你想寫什麽就寫什麽"].ToString();
public static SqlConnection myconn = new SqlConnection(connstr);
public static System.Data.SqlClient.SqlCommand cmd;

//關閉鏈接
public void sqlconn_Close()
{
if (myconn.State == ConnectionState.Open)
{
myconn.Close();
//myconn.Dispose();
}
}

//打開數據庫鏈接
public void sqlconn_Open()
{
if (myconn.State == ConnectionState.Closed)
{
// myconn.Close();
myconn.Open();
}
}

//連接數據庫的一個sql
public void sqlcomm(string mysqlstring)
{
cmd = new System.Data.SqlClient.SqlCommand();
cmd.Connection = myconn;
cmd.CommandText = mysqlstring;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
}

public string UserCheck(string userName, string password)
{
try
{
sqlcomm("usp_UserCheck_select");
SqlParameter param = new SqlParameter();
param.Direction = System.Data.ParameterDirection.ReturnValue;
cmd.Parameters.Add(param);
cmd.Parameters.AddWithValue("@userName", userName);
cmd.Parameters.AddWithValue("@password",password);
//sqlconn_Open();我記得好像是不要寫的,不確定,LZ調試時自己多留意下:)
cmd.ExecuteNonQuery();
sqlconn_Close();
return param.Value.ToString();
}
catch (Exception ex)
{
return "Error" + ex.Message;
}
}

protected void Button1_Click(object sender, EventArgs e)
{
if(UserCheck(textbox1.text.trim(), textbox2.text.trim())=="1")
{//成功}
else{//失敗}
}



--存儲過程你就這樣寫
create proc usp_UserCheck_select
@userName nvarchar(50),
@password nvarchar(50)
AS
BEGIN
if exists (select 1 from public_item where username=@username and password=@password)
return 1
END
liang4571231 2008-09-30
  • 打赏
  • 举报
回复
我都输入了是*号了,还用where干什么啊
[Quote=引用 10 楼 cooolchen 的回复:]
select * from User
---
select * from user where userid = '欲登录的用户名' and password = '输入的密码';
[/Quote]
mjjzg 2008-09-30
  • 打赏
  • 举报
回复
string comstr select * from User where 表中用户名='"+TextBox2.Text+"' and 表中密码名='"+TextBox3.Text+"';
而这段
string uname;
string pword;
int i = 0;

SqlDataReader sdr = com.ExecuteReader();
if (sdr.Read())
{
uname = com.ExecuteReader().GetString(0);
pword = com.ExecuteReader().GetString(1);
if (TextBox2.Text == uname && TextBox3.Text == pword)
{
TextBox1.Text = "登录成功";
i = 1;
return;
}
if (i == 0)
{
TextBox1.Text = "登录失败";
}
就可这样写了
int i = 0;
SqlDataReader sdr = com.ExecuteReader();
if (sdr.Read())
{
TextBox1.Text = "登录成功";
i = 1;
return;
}
else
{
TextBox1.Text = "登录失败";
}
mjjzg 2008-09-30
  • 打赏
  • 举报
回复
还有就是7楼说的你已经调用了数据阅读器为何还要用 com.ExecuteReader()来付职
cooolchen 2008-09-30
  • 打赏
  • 举报
回复
select * from User
---
select * from user where userid = '欲登录的用户名' and password = '输入的密码';

liang4571231 2008-09-30
  • 打赏
  • 举报
回复
图片上挂掉的字是:
“关键字‘User’附近有语法错误”
JeffChung 2008-09-30
  • 打赏
  • 举报
回复
看不到你的错误是什么
mjjzg 2008-09-30
  • 打赏
  • 举报
回复
数据阅读器str你关闭了吗
连接conn1你关闭了吗
shadowjl 2008-09-30
  • 打赏
  • 举报
回复
if (sdr.Read())
{
uname = sdr.GetString(0);
pword = sdr.GetString(1);
if (TextBox2.Text == uname && TextBox3.Text == pword)
{
TextBox1.Text = "登录成功";
i = 1;
return;
}
if (i == 0)
{
TextBox1.Text = "登录失败";
}
shadowjl 2008-09-30
  • 打赏
  • 举报
回复
图片挂掉了,不知道出了什么错
liang4571231 2008-09-30
  • 打赏
  • 举报
回复
不行啊,2、3楼的都不行,还有谁看出来的美
cyz9977 2008-09-30
  • 打赏
  • 举报
回复
if (sdr.Read())

while (sdr.Read())
加载更多回复(2)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧