首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.data.datarow

System.data.datarow
EN

Stack Overflow用户
提问于 2011-11-30 14:13:06
回答 2查看 674关注 0票数 1
代码语言:javascript
复制
        [WebMethod]
    public List< string> HelloWorld(string prefixText)
    {
        SqlConnection con = new SqlConnection("Database=bluedd;Server=(local);Integrated Security=SSPI");
        con.Open();
        SqlCommand cmd = new SqlCommand("select user_master.first_name from user_master where first_name like @Name+'%'", con);
        cmd.Parameters.AddWithValue("@Name", prefixText);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        List<string> CountryNames = new List<string>();

        for (int i = 0; i < dt.Rows.Count; i++)
        {
           CountryNames.Add(dt.Rows[i].ToString());
        }
        return CountryNames;
    }

此代码返回System.Data.DataRow是否存在任何强制转换问题

我是软件开发的新手,任何帮助都将不胜感激

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-30 14:19:06

您的代码将返回数据行。要返回该列,您可以执行如下操作

代码语言:javascript
复制
CountryNames.Add(dt.Rows[i][0]);

我认为你想要的是用这个替换你的for循环。

代码语言:javascript
复制
        foreach(DataRow row in dt.Rows)
           {
              CountryNames.Add(row[0]);
           }
        return CountryNames;
票数 1
EN

Stack Overflow用户

发布于 2011-11-30 14:20:34

您需要告诉它行中的哪一列。"System.Data.DataRow“是对行对象本身调用.ToString()的结果。试试这个:

代码语言:javascript
复制
[WebMethod]
public List<string> HelloWorld(string prefixText)
{
    var result = new List<string>();
    using (var con = new SqlConnection("Database=bluedd;Server=(local);Integrated Security=SSPI"))
    {
        using (var cmd = new SqlCommand("select user_master.first_name from user_master where first_name like @Name+'%'", con))
       {
           cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = prefixText;
           con.Open();
           using (var rdr = cmd.ExecuteReader())
           {
             while (rdr.Read())
               {
                 result.Add(rdr[0].ToString());
               }
           }
       }
    }
    return result;
}

请注意,我还做了其他几个更改。你可能还不会完全理解它们,但我对每一个都有一个理由。最重要的更改是using块,也是您现在应该开始做的事情。这些方法可以确保正确地处理(关闭)特定的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8321855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档