caoxwei2 2015-11-13 00:43 采纳率: 100%
浏览 1974
已采纳

数据库表的插入问题,数据集的更新

需求:假设SQL数据库中有数据库mydb,mydb中有一个表tb_repo,字段为时间,事件名称,
事件描述,假设我想把同样字段的一张excel表插入到tb_repo中,如何实现?

我在C#中实现方法:读取excel表,并将它填充到数据集dataset1,然后再将tb_repo读取
到dataset2,然后用Merge()函数合并,合并成功了,但我不知道如何将新的数据集写入、
数据库更新tb_repo。

请问我的实现是否有问题?(我只要求整张表插入的方法,最好不是一条记录一条记录的插入)

  • 写回答

1条回答 默认 最新

  • hotmee 2015-11-13 02:05
    关注

    我这里刚好有个代码,昨晚刚研究出来
    实际效果就是将Dataset 内修改后的内容批量更新到数据库内!

     using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    namespace UseUpdate
    {
        public partial class Frm_Main : Form
        {
            public Frm_Main()
            {
                InitializeComponent();
            }
    
            private DataSet G_st = new DataSet();//声明表字段
    
            private void Frm_Main_Load(object sender, EventArgs e)
            {
                G_st.Tables.Add(new DataTable());
                GetMessage();//填充表
                dgv_Message.DataSource = G_st.Tables[0];//设置数据源
                dgv_Message.Columns[0].Visible = false;//隐藏主键列
            }
    
            private void btn_Submit_Click(object sender, EventArgs e)
            {
                SqlDataAdapter P_SqlDataAdapter = new SqlDataAdapter();//创建数据适配器
                SqlCommand P_cmd = new SqlCommand(@"UPDATE [dbo].[备品] SET MPN=@MPN,品牌=@品牌,结存数量=@结存数量,货位号=@货位号 WHERE ID=@ID", new SqlConnection(@"server=192.168.60.18;database=浙江先芯科技;uid=sa;pwd=lierda"));
                P_cmd.Parameters.Add("@ID", SqlDbType.Int, 10, "ID");//设置参数
                P_cmd.Parameters.Add("@MPN", SqlDbType.NVarChar, 10, "MPN");//设置参数
                P_cmd.Parameters.Add("@品牌", SqlDbType.NVarChar, 10, "品牌");//设置参数
                P_cmd.Parameters.Add("@结存数量", SqlDbType.Int, 10, "结存数量");//设置参数
                P_cmd.Parameters.Add("@货位号", SqlDbType.NVarChar, 10, "货位号");//设置参数
                P_SqlDataAdapter.UpdateCommand = P_cmd;//设置UpdateCommand属性
                P_SqlDataAdapter.Update(G_st.Tables[0]);//更新数据库中数据
                G_st.AcceptChanges();//提交修改
                MessageBox.Show("更改成功!","提示!");//弹出消息对话框
                GetMessage();//填充表
                dgv_Message.DataSource = G_st.Tables[0];//设置数据源
            }
    
            /// <summary>
            /// 查询数据库信息
            /// </summary>
            /// <returns>方法返回DataTable对象</returns>
            private void GetMessage()
            {
                G_st.Tables[0].Clear();
                string P_Str_ConnectionStr = string.Format(@"server=192.168.60.18;database=浙江先芯科技;uid=sa;pwd=lierda");
                string P_Str_SqlStr = string.Format("SELECT [MPN],[品牌],[结存数量],[货位号],[ID] FROM [dbo].[备品]");
                SqlDataAdapter P_SqlDataAdapter = new SqlDataAdapter(//创建数据适配器
                    P_Str_SqlStr, P_Str_ConnectionStr);
                P_SqlDataAdapter.Fill(G_st.Tables[0]);//填充数据表
            }
    
            private void dgv_Message_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                G_st.Tables[0].Rows[e.RowIndex][e.ColumnIndex] =dgv_Message.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
            }
    
        }
    }
    

    图片说明

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

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器