VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1817|回复: 14

关于asp.NET中不能把SqlDataReader返回值赋给变量的问题,着急啊,请高手给看看!

[复制链接]

1

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-21 09:00:01 | 显示全部楼层 |阅读模式
脚本源代码如下:
<script runat="server">
    string strcnn="server=localhost;uid=sa;pwd=wbq;database=WebDate_WBQ";
    SqlConnection cnn;
    SqlCommand cmd;

    void Page_Load(object sender, EventArgs e) {
       string userID=Request.QueryString["userID"];
       cnn=new SqlConnection(strcnn);
       cnn.Open();
       cmd=new SqlCommand("select * from users where userID="+userID+"",cnn);
       SqlDataReader dr=cmd.ExecuteReader();
       Label1.Text=dr("userID").ToString();//以下代码有错。
       TextBox1.Text=dr("userName").ToString();
       TextBox2.Text=dr("pwd").ToString();
       TextBox3.Text=dr("sex").ToString();
       TextBox4.Text=dr("regDate").ToString();
       TextBox5.Text=dr("QQ").ToString();
       TextBox6.Text=dr("email").ToString();
       TextBox7.Text=dr("address").ToString();
       dr.Close();
       cnn.Close();
    }
</script>

编译错误信息如下:
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误信息: CS0118: “dr”表示“变量”,此处应为“方法”

源错误:

行 18:        cmd=new SqlCommand("select * from users where userID="+userID+"",cnn);
行 19:        SqlDataReader dr=cmd.ExecuteReader();
行 20:        Label1.Text=dr("userID").ToString();
行 21:        TextBox1.Text=dr("userName").ToString();
行 22:        TextBox2.Text=dr("pwd").ToString();
回复

使用道具 举报

1

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-30 13:09:01 | 显示全部楼层
急用啊!
回复

使用道具 举报

0

主题

119

帖子

67.00

积分

新手上路

Rank: 1

积分
67.00
发表于 2020-1-30 14:00:01 | 显示全部楼层
SqlDataReader dr=cmd.ExecuteReader();
行 20:        Label1.Text=dr("userID").ToString();
行 21:        TextBox1.Text=dr("userName").ToString();
行 22:        TextBox2.Text=dr("pwd").ToString();

在20行前加一句
dr.Read();
回复

使用道具 举报

1

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-30 17:45:02 | 显示全部楼层
老兄啊,在20行前加一句:dr.Read();也不行啊,还是原来的错误!

回复

使用道具 举报

0

主题

119

帖子

67.00

积分

新手上路

Rank: 1

积分
67.00
发表于 2020-1-30 19:09:01 | 显示全部楼层
dr["userID"].ToString();
()->[]
回复

使用道具 举报

1

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-30 20:54:01 | 显示全部楼层
----dr["userID"].ToString();
()->[]

这有错吗?

我改成:Lable1.Text=(string).dr["userID"]也不对啊!
回复

使用道具 举报

0

主题

119

帖子

67.00

积分

新手上路

Rank: 1

积分
67.00
发表于 2020-1-30 21:54:02 | 显示全部楼层
sqlCon.Open();
            SqlDataReader sqlReader = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
            string[] strCourses = new string[20];
            string[] iValues = new string[20];
            int i = 0;
            while (sqlReader.Read())
            {
                iValues[i] = sqlReader.GetString(0);
                strCourses[i] = sqlReader.GetString(1);
                i++;
            }
            sqlReader.Close();

这是个例子
回复

使用道具 举报

1

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-31 06:45:01 | 显示全部楼层
我改成:
       Label1.Text=dr.GetString(0);
       TextBox1.Text=dr.GetString(1);
       TextBox2.Text=dr.GetString(2);
       TextBox3.Text=dr.GetString(3);
       TextBox4.Text=dr.GetString(4);
       TextBox5.Text=dr.GetString(5);
       TextBox6.Text=dr.GetString(6);
       TextBox7.Text=dr.GetString(7);
后原来的错误消失了

SqlDataReader sqlReader = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
括号中的代码什么意思啊?

怎么我把自己的改成
SqlDataReader dr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
它又出现在了:

第 1 行: '=' 附近有语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 第 1 行: '=' 附近有语法错误。

如果改成:SqlDataReader dr=cmd.ExecuteReader();也是同样的错误!
回复

使用道具 举报

0

主题

119

帖子

67.00

积分

新手上路

Rank: 1

积分
67.00
发表于 2020-1-31 09:27:01 | 显示全部楼层
老大,会不会变通?
回复

使用道具 举报

1

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-31 10:09:01 | 显示全部楼层
老兄啊,我是才学不久的啊,现在我在做作业!
麻烦你讲详细点吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表