别cpu我 2021-10-27 15:05 采纳率: 66.7%
浏览 84
已结题

c#操作access查询更改简单问题请教

img

img


如图access数据库表1表2,我想实现查询“Xid”在表2出现的次数以更改表1中对应的字段“出现次数”,现在的想法是将表1数据存在Datatable中(dt),遍历dt,查询字段Xid在表2出现的次数count,同时将count去update道表1中,代码实现写到了这里,请教一下接下来如何实现存count啊


  private void Button_Click(object sender, RoutedEventArgs e)
        {
            string path = "D:\\data";
            string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + "\\test.mdb";

            OleDbConnection conn = new OleDbConnection(strConnect);
        
            //OleDbCommand cmd = new OleDbCommand("select * from 表2", conn);
            OleDbCommand acmd = new OleDbCommand("select * from 表1", conn);
            conn.Open();
            OleDbDataAdapter da = new OleDbDataAdapter(acmd);
            OleDbCommandBuilder odb = new OleDbCommandBuilder(da);
            odb.QuotePrefix = "[";
            odb.QuotePrefix = "]";
            DataSet ads = new DataSet();
            da.Fill(ads,"表1");
            DataTable dt = ads.Tables["表1"];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string str = "select count(*) as count from 表2 where Xid =" + dt.Rows[i]["Xid"].ToString();
                OleDbCommand c = new OleDbCommand(str, conn);
            }
            conn.Close();
        }
  • 写回答

1条回答 默认 最新

  • bekote 2021-10-27 15:32
    关注
    
    update1 set 出现次数 = (case when cnt is null then 0 else cnt end) from1 a left join (select Xid, count(1) as cnt from2 group by Xid) b on a.Xid = b.Xid
    

    不用那么麻烦,执行这1个sql语句就可以啦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 修改了问题 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目
  • ¥15 利用pthon计算薄膜结构的光导纳
  • ¥15 海康hlss视频流怎么播放
  • ¥15 Paddleocr:out of memory error on GPU
  • ¥30 51单片机C语言数码管驱动单片机为AT89C52