急求各路大神搭救啊!!!!!!

zeng0915 2014-12-16 04:38:30
应老师要求做一个信息管理的简单web系统,但在链接数据库的时候出现了这样的问题,,由于道行不够,怎么都解决不了。
问题如下:
我用了一个login控件,
获取两个文本框的值,
以下是我用来测试链接的,获取数据库中的值,设了断点,看读取的是什么值
//获取用户名控件
TextBox txtUserName = (TextBox)Login1.FindControl("UserName");
string userName = txtUserName.Text.Trim();

//获取密码控件
TextBox txtPsw = (TextBox)Login1.FindControl("Password");
string psw = txtPsw.Text;

//错误显示控件

//查询语句
string sql = "select * from DL where uId=@userName and passWord=@passWord";

//为参数赋值
SqlParameter[] pms = new SqlParameter[] { new SqlParameter("@userName", userName), new SqlParameter("@password", psw) };
string constr = "Data Source=GG;Initial Catalog=LianXiDB;User ID=sa;Password=123";
//判断用户名与密码是否正确
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand scd = new SqlCommand(sql,con))
{
scd.Parameters.AddRange(pms);
con.Open();
using (SqlDataReader read = scd.ExecuteReader())
{
if (read.HasRows)
{

string id = read.GetString(0);
string psww = read.GetString(1);


}
}
}
}

结果就成这样子了

请大哥们指点一下迷津,小弟不胜感激!!谢谢
...全文
160 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdashewan 2014-12-16
  • 打赏
  • 举报
回复
看你平时也不查msdn,我帮你查,发你地址,你先看完再继续发问吧 http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand(v=VS.80).aspx
於黾 2014-12-16
  • 打赏
  • 举报
回复
ExecuteReader()是查询啊,返回的是数据集 ExecuteNonQuery()是执行insert,update,delete的时候用的,返回受影响的行数
zeng0915 2014-12-16
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:

            // Call Read before accessing data.
            while (reader.Read())
            {
                //do your work
            }

            // Call Close when done reading.
            reader.Close();
请问,如果我想通过这两个文本框的值,跟我的数据库里的值匹配然后正确的话,按确定,定向到另一个页面,需要怎么做, 我是这样做的,不过感觉不行 using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand scd = new SqlCommand(sql,con)) { scd.Parameters.AddRange(pms); con.Open(); if (scd.ExecuteNonQuery()>0) { Response.Redirect("HomePage.aspx"); } } } 老是返回scd.ExecuteNonQuery()==-1,我的sql语句不是查询么??不应该返回的是行数么??怎么变-1了??
zeng0915 2014-12-16
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
还有,SqlDataReader 最好命名为reader而不是read 很容易把名词跟动词搞混 SqlDataReader reader 这是个数据库连接对象 reader.Read()是个方法,表示读取一行 读完再获取
请问,如果我想通过这两个文本框的值,跟我的数据库里的值匹配然后正确的话,按确定,定向到另一个页面,需要怎么做, 我是这样做的,不过感觉不行 using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand scd = new SqlCommand(sql,con)) { scd.Parameters.AddRange(pms); con.Open(); if (scd.ExecuteNonQuery()>0) { Response.Redirect("HomePage.aspx"); } } } 老是返回scd.ExecuteNonQuery()==-1,我的sql语句不是查询么??不应该返回的是行数么??怎么变-1了??
_Monkey_King 2014-12-16
  • 打赏
  • 举报
回复
嗯....2楼说的对
於黾 2014-12-16
  • 打赏
  • 举报
回复
还有,SqlDataReader 最好命名为reader而不是read 很容易把名词跟动词搞混 SqlDataReader reader 这是个数据库连接对象 reader.Read()是个方法,表示读取一行 读完再获取
xdashewan 2014-12-16
  • 打赏
  • 举报
回复

            // Call Read before accessing data.
            while (reader.Read())
            {
                //do your work
            }

            // Call Close when done reading.
            reader.Close();
於黾 2014-12-16
  • 打赏
  • 举报
回复
你确定执行read.GetString(0)之前 不需要先执行read.Read()?
bdmh 2014-12-16
  • 打赏
  • 举报
回复
你确认read读取到内容了吗

62,046

社区成员

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

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

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

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