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

问题描述

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

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

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

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

解决方案

我这里刚好有个代码,昨晚刚研究出来
实际效果就是将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;
        }

    }
}

时间: 2024-10-29 07:00:43

dataset-数据库表的插入问题,数据集的更新的相关文章

在sqlserver 数据库表中插入中文,查看表,中文显示乱码

问题描述 在sqlserver 数据库表中插入中文,查看表,中文显示乱码 sprintf(szSQL,"insert into %s (fromid,toid,time,msg,fontface,fontsize,fontcolor,fontflags) VALUES (%u,%u,%u,'%s','%s',%u,%u,%u)",TABLE_IM_MSG,ulFromID,ulToID,tCurrentTime,strMsg.c_str(),strfontface.c_str(),fo

mysql数据库表中插入一行新纪录时,调用一个java程序

问题描述 mysql数据库表中插入一行新纪录时,想要通知调用一个java程序,在网上查了下,说可以使用触发器,监听数据表中的变化,但是触发器器能直接调用外部的java程序吗,如果可以,该怎么做.或者说除了触发器以外,有好的其他方法,有想过去轮训数据库,但经常访问数据库效率太差了,所以想看看有没有其他的实现方法 解决方案 解决方案二:oracle的应该可以,你参考一下这两个链接:mysql的即使能实现,估计也很难:解决方案三:引用1楼u012724379的回复: oracle的应该可以,你参考一下

c#-C#向数据库表中插入信息。。求不吐槽命名规范

问题描述 C#向数据库表中插入信息..求不吐槽命名规范 if (textBox5.Text.Trim() == string.Empty || textBox4.Text.Trim() == string.Empty) { MessageBox.Show(""请输入课程号和课程名!""); } else { string consqlserver = ""server = .;Initial Catalog=Students;integrated

大数据量下的数据库查询与插入如何优化? (整理)

数据库经常要做一些查询与插入,但是如果查询和插入的数据量过大的时候就会引发数据库性能问题,降低数据库工作效率.因此性能调优是大家在工作中都能够预见的问题,大到世界五百强的核心系统,小到超市的库存系统,几乎都会有要调优的时候.面对形形色色的系统,林林总总的需求,调优的手段也是丰富多彩. 1.尽量使语句符合查询优化器的规则避免全表扫描而使用索引查询 2.避免频繁创建和删除临时表,以减少系统表资源的消耗. 3.尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理. 4.建立高效的索引

C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// <param name="sourceDataTable">数据源表</param> /// <param name="targetTableName">服务器上目标表</param> /// <param nam

informix数据库表主键重复,数据插入失败。怎么解决?在线急等!!!!

问题描述 informix数据库表主键重复,数据插入失败.怎么解决?在线急等!!!! informix数据插入出现主键重复.怎么可以更好地解决这类问题? 解决方案 数据库表插入数据失败数据库表中插入重复数据的处理数据库表中插入重复数据的处理

c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入

问题描述 c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入 c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入. 并且报错,哪几天数据失败了.和失败的原因. 我现在是可以生成一个把一个数据库表的数据导入到另一个数据库表中.但是呢,有些数据由于某个字段过长无法导入成功,而导致所有的都无法导入.直接造成导入失败.我 想过滤掉那条不成功的继续导入.不至于都导入不成功.急! 想和好久也没解决.网上也没找到说法 解决方案 数据库表插入数据失败数据库批量

快速插表-MYSQL 如果提升 MYSQL 插入数据库表的速度

问题描述 MYSQL 如果提升 MYSQL 插入数据库表的速度 我在插入 MYSQL 数据库表时 800 多个表 插入时间大 45 秒钟 速度太慢了. 解决方案 你的意思是如何插入数据, 还是创建表?感觉意思不是很清楚 解决方案二: 不明白你要创建那么多表做什么如果你需要创建那么多表, 而且表的结构都是统一的, 不妨每天晚上创建好一万个备用表(有就不用, 不够了才加).在需要创建表时,把备用表改一下名就得.

如何批量生成1000条小写字母与数字组成的16位随机字符串并插入到数据库表内

问题描述 如何批量生成1000条小写字母与数字组成的16位随机字符串并插入到数据库表内 解决方案 解决方案二:生成随机数部分Randomrd=newRandom();改成Randomrd=newRandom(Guid.NewGuid().GetHashCode());插入数据库这个就没多大意思了吧或者你也可以生成2000条guid码,然后取出中划线取某段16位长度,然后去除重复的字符串后取前1000条插入数据库解决方案三:引用1楼starfd的回复: 生成随机数部分Randomrd=newRan