weixin_43747032 2022-07-11 12:03 采纳率: 100%
浏览 60
已结题

关于#Sql#的问题,如何解决?

问题遇到的现象和发生背景

如何实现使用数组来读取SqlDataReader中的数值?C#操作SQL数据库,数据库有X11和Y11两列若干对坐标值,想查找出读出给定X11=285,与285数大小相邻的两个X11和Y11,如这里a=285,想查找到数据库中X11=275,对应的Y11,X11=300,对应的Y11,这四个值。

问题相关代码,请勿粘贴截图
 float a = 285;         
            string conStr = "server=DESKTOP-VAS78Q7\\SQLEXPRESS;database=db_test;uid=sa;pwd=123"; //连接字符串
           SqlConnection conn = new SqlConnection(conStr);
            conn.Open();  
            string sql = "(select * from (select top 1 * from T4 where X11 <  '" + a + "' order by X11 desc) tt1) union (select * from (select top 1 * from T4 where X11 >  '" + a + "' order by X11) tt2)";
            SqlCommand Cmd = new SqlCommand(sql, conn);
            SqlDataReader db = Cmd.ExecuteReader();

            //// 以粗体显示标题
            //label17.Text = "<b>X11 Y11</b><br>";

            //// 循环读取结果集
            while (db.Read())
            {
            //    // 读取两个列值并输出到Label中
               label17.Text += db["X11"] + " " + db["Y11"] + "<br>";
            }
            //// 关闭DataReader
          db.Close();

            //double x11[]=new double[1];
            //if (db.Read())
            //{
            //    double x11[] = Convert.ToDouble(db["X11"]);
            //    double y11 = Convert.ToDouble(db["Y11"]);
            //    conn.Close();
            //}
运行结果及报错内容

以上方法实现了利用label控件显示出这4个数值,我想把这四个值写入数组中,而不是使用label控件显示(主要是为了验证查找这4个数值功能正常)

我的解答思路和尝试过的方法

利用 while (db.Read())实现了功能,但是想用if (db.Read())(看最后一部分注释掉的代码)把这四个值写入数数组中,目前只能写入一对X11和Y11。

我想要达到的结果

利用上面最后一部分注释掉的代码实现 double x11[]和double y11[]两个数组或者一个二维数组中,实现读取存储这4个数值。

  • 写回答

1条回答 默认 最新

  • 码老头 2022-07-11 13:38
    关注

    你的数据库操作部分我就不写示例了,以下是如何使用while循环,将DataReader中的数据存储到集合(数组)中:

    // 定义一个double类型的空集合
    var list = new List<double>();
    while (db.Read())
    {
        // 将db["X11"]列的数据转换后添加到集合
        list.Add(Convert.ToDouble(db["X11"]));
        // 将db["Y11"]列的数据转换后添加到集合
        list.Add(Convert.ToDouble(db["Y11"]));
    }
    
    // 最后(如果需要),将集合转换成数组
    var result = list.ToArray();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月19日
  • 已采纳回答 7月11日
  • 赞助了问题酬金5元 7月11日
  • 创建了问题 7月11日

悬赏问题

  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 网友们我该怎么办啊,急
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 目标跟踪,计算机视觉
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败