ASP.Net C# 无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“System.Data.DataTable" 100

大神们,我在写验证用户名是否存在的代码之中,在其中的DataTabledt=db.reDr(str);这句中报错,提示无法将类型“System.Data.SqlClien... 大神们,我在写验证用户名是否存在的代码之中,在其中的 DataTable dt = db.reDr(str);这句中报错,提示无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“System.Data.DataTable",具体代码是

//公共类代码,公共类文件名为DB.cs
public SqlDataReader reDr(string str)
{
SqlConnection conn = GetCon(); //链接数据库
conn.Open();
SqlCommand com = new SqlCommand(str, conn);
SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);
return dr;

}

//调取CheckName方法判断用户名是否存在
{
public int CheckName()
{
DB db = new DB();
string str = "select count(*) from db_User where db_user='" + this.u_name.Text + "'";
try
{
DataTable dt = db.reDr(str); //这里报错
if (dt.Rows[0][0].ToString() != "0")
{
return -1;
}
else
{
return 2;
}
}
catch (Exception ee)
{
return 0;
}
}

请问怎样解决这个报错问题,谢谢!
展开
 我来答
samismiling
推荐于2018-03-19 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部

你取得数据的方式不对,直接就可以检索出数据放到datatable里,下面是标准的取得sqlserver数据库放到datatable里的代码,最后两行是直接绑定给gridview

        string sql = string.Format(selSql);
        DataTable table = new DataTable();
        using (SqlConnection connection = new SqlConnection(DBConnection.DB_CONNECTION))
        {
            SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
            adapter.Fill(table);
        }

        gvList.DataSource = table;
        gvList.DataBind();
内裤最大功能
2015-07-09 · TA获得超过3106个赞
知道大有可为答主
回答量:3202
采纳率:79%
帮助的人:492万
展开全部
你看一下你的db类,里面写一个返回Datatable的函数。
不然,你只能是创建 SqlDataReader对象来接收返回值了。
追问
请问在DB公共类里的Datatable的函数应该怎样写?
追答
/// <summary>
        /// 执行查询SqlDataApter命令,返回一个DataTable对象
        /// </summary>
        /// <param name="constr">连接的数据库信息字符串</param>
        /// <param name="sql">执行的sql操作语句</param>
        /// <returns></returns>
        public static DataTable ExecuteDataTable(string sql)
        {
            DataTable dt = new DataTable();
            using (SqlConnection con = new SqlConnection(constr))
            {
                con.Open();
                using (SqlDataAdapter sda = new SqlDataAdapter(sql, con))
                {                   
                    sda.Fill(dt);
                }
            }
            return dt;
        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式