如何从 Datareader 获取多行

2024-01-27

这是我的代码。它工作正常,但只返回一行。正如您在 SQL 语句中看到的,我需要在表单中使用的数据网格中返回 2 行。虽然该过程读取 2 行,但它只显示一行。 NameAddrmark 是字段的构造函数。

    public NameAddrmark GetNameRespCommentData(string respid)
    {
        NameAddrmark cms = new NameAddrmark();
        //var cms = new List<NameAddrmark>();

        SqlConnection connection = new SqlConnection(GeneralData.getConnectionString());

        string sql = "SELECT top 2 * FROM dbo.RESPONDENT_COMMENT WHERE respid = " + GeneralData.AddSqlQuotes(respid) + " and USRNME = " + GeneralData.AddSqlQuotes(UserInfo.UserName) + " order by COMMDATE ASC";
        SqlCommand command = new SqlCommand(sql, connection);

        try
        {
            connection.Open();
            SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult);

            while(reader.Read())
            //if (reader.Read())
            {
                cms.Id = respid;
                cms.Date8 = reader["COMMDATE"].ToString();
                cms.Usrnme = reader["USRNME"].ToString();
                cms.Marktext = reader["COMMTEXT"].ToString();
            }
            //else
            //    cms = null;
        }
        catch (SqlException ex)
        {
            throw ex;
        }
        finally
        {
            connection.Close();
        }
        return cms;
    }

在我的表单上,我将 cms 返回到一个列表。将数据网格的数据源设置为列表。正确显示第一行,但我需要显示两行。希望有人能帮忙。谢谢。


您可以返回一个List<NameAddrmark>:

public List<NameAddrmark> GetNameRespCommentData(string respid)
{
    List<NameAddrmark> cmsList = new List<NameAddrmark>();
    SqlConnection connection = new SqlConnection("insert connection string");
    string sql = "SELECT top 2 * FROM dbo.RESPONDENT_COMMENT WHERE respid = " + GeneralData.AddSqlQuotes(respid) + " and USRNME = " + GeneralData.AddSqlQuotes(UserInfo.UserName) + " order by COMMDATE ASC";
    SqlCommand command = new SqlCommand(sql, connection);
    try
    {
        connection.Open();
        SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult);
        while (reader.Read())
        {
            NameAddrmark cms = new NameAddrmark();
            cms.Id = respid;
            cms.Date8 = reader["COMMDATE"].ToString();
            cms.Usrnme = reader["USRNME"].ToString();
            cms.Marktext = reader["COMMTEXT"].ToString();
            cmsList.Add(cms);
        }
    } 
    catch (SqlException ex)
    {
        throw; // instead log the exception
    } 
    finally
    {
        connection.Close();
    }
    return cmsList;
}

But你应该真正使用参数而不是字符串连接来防止 sql 注入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Datareader 获取多行 的相关文章

随机推荐

  • 你可以使用shinyjs来隐藏/显示整个面板吗?

    我想知道是否可以在整个闪亮的 wellPanel 上使用闪亮的隐藏和显示功能 我有兴趣这样做是为了有条件地显示两个面板之一 据我所知 我不能在条件面板的条件中使用反应值 下面是我的想法的一个例子 但是我不知道如何引用在shinyjs函数中给
  • tls:HTTP 请求没有重新协商错误

    我试图在 Go 中发出一个简单的 HTTP 请求 在直接按照指南进行操作后 我不断收到相同的错误 local error tls no renegotiation 我不太明白这个怎么解释 我知道这在服务器上不是问题 因为当我从 python
  • 无法将 Chrome Live Edit 与 Webpack 源映射结合使用

    我有一个 webpack 4 配置 可以为我的应用程序的 JavaScript 生成源映射 在 Chrome 中调试我的应用程序时 会加载源映射 以便我可以看到我的统一代码 我将在函数中设置断点 并在 源 选项卡中对代码进行编辑 我按 CM
  • 如何获取.net 4.0中正在运行的任务列表

    我正在尝试获取所有当前正在运行的任务的列表 net 4 0 任务 API 是否提供此类功能 或者唯一的选择是明确将任务存储在单独的集合中 我想你需要TaskScheduler GetScheduledTasks http msdn micr
  • 如何使 VBA 脚本自动生成“另存为”窗口

    我正在编写一个 VBA 代码 该代码将通过 SAP 软件的自动化屏幕保存 PDF 文件 我已经到达 SAP 询问我要将 PDF 文件保存在哪里的位置 它会打开一个 Windows 资源管理器 另存为 窗口 此时 VBA代码停止 我需要手动输
  • PostgreSQL CROSS JOIN 索引提高性能

    这是我的第二部分question https stackoverflow com questions 49938650 table indexing on postgresql for performance 所以我有下表 CREATE T
  • 当 iOS 10 发布时,我可以使用 Xcode 7.3 提交 Swift 2.2 应用程序吗?

    当 iOS 10 发布时 我是否能够向应用程序商店提交使用 Swift 2 2 运行并使用 Xcode 7 3 构建的应用程序 或者是否必须迁移到 swift 2 3 或 Swift 3 并使用 Xcode 8 构建应用程序 是的你可以 甚
  • 使用 JNI 传递并返回 OpenCv Mat 对象

    我想在 JNI 中编写一个这样的函数 JNIEXPORT jobject JNICALL Java com datumdroid android ocr simple HoughLine nativeDetectLine JNIEnv je
  • Cucumber IDE 可以自动完成功能编写吗?

    有没有Eclipse插件可以用来写黄瓜的特点 http github com aslakhellesoy cucumber wiki feature introduction具有自动完成功能 我想从其他功能中找到并重用步骤会很好 有任何想法
  • Google Charts 次轴折线图

    我目前正在学习一些带有网络编辑的谷歌图表 以扩大我的知识 但我遇到了一个无法解决的问题
  • Select2 v4 无法使用 Tab 键进入,按 Enter 键,然后选择,使用 Firefox(又称无鼠标访问)

    I am currently unable to tab into a Select2 enabled
  • 动画 UICollectionView 标题高度变化

    我目前正在使用带有标题的 UICollectionView 并且想知道如何在需要时设置动画并扩展标题高度 我正在尝试模拟 iPhone 版 Expedia 应用程序中的功能 点击图像会展开标题单元格以显示中心的图像 我已经尝试这个有一段时间
  • Gmail API 批量获得支持吗?

    我正在使用 Gmail API 进行 WEB HTTP 调用 有没有办法批量获取消息内容 看来messages list只返回messageIds messages get只支持单条消息查询 列表API https www googleap
  • 检查 Silverlight 中的互联网连接

    我正在编写一个 Silverlight 4 应用程序 并想在打开已安装的浏览器外应用程序时检查是否存在有效的互联网连接 然后从我的网站下载一些数据 做这个的最好方式是什么 我意识到我可以在 WebRequest 周围放置一个 try cat
  • 使用 jQuery 更改 Chosen.js 选择框的值

    我正在尝试更改选择框的值选择 js http harvesthq github com chosen 覆盖 这个想法是当用户单击按钮时更改所选值 使用常规选择框 我可以通过执行以下操作来更改值 GroupsShowNext unbind c
  • 在 SqlCommand 中使用参数删除

    我使用 ADO NET 从数据库中删除一些数据 如下所示 using SqlConnection conn new SqlConnection connectionString try conn Open using SqlCommand
  • knitr kable:RNW 的 PDF 中的文本颜色为灰色

    当我使用创建表时knitr kableRNW 文件中的函数 PDF 中表格项目的文本颜色显示为灰色 我想把它改成黑色 我怎样才能做到这一点 documentclass article begin document lt lt gt gt k
  • “and”如何与奇数和偶数相关?在JS中

    我的任务是弄清楚如何确定奇数和偶数 我无法使用 我使用 是因为我在互联网上找到了它 但我找不到适合它工作方式的方法 N A 我创建的样本是 if 22 1 0 return true else return false 返回真 按位运算符的
  • 动态嵌套 React.js 组件

    我想创建一个灵活 动态可以使用 React js 呈现的 JSX 表单格式 此格式必须包含嵌套组 一个组可以包含其他组以及问题 var Group React createClass render function return field
  • 如何从 Datareader 获取多行

    这是我的代码 它工作正常 但只返回一行 正如您在 SQL 语句中看到的 我需要在表单中使用的数据网格中返回 2 行 虽然该过程读取 2 行 但它只显示一行 NameAddrmark 是字段的构造函数 public NameAddrmark