DataGridView数据更新至数据库-逐条更新

首先判断是否存在指定记录,存在则执行更新语句,不存在则执行插入语句。主要用到三个函数:

 public class PubVariant
    {
        public static string strUpdateSql = "update CorrespondFields set CadField = @CadField,FieldType = @FieldType,CADTYPE = @CADTYPE"
            + " where SdeLayerName = @SdeLayerName and CadLayerName = @CadLayerName and SdeField = @SdeField";
        public static string strInsertSql = "insert into CorrespondFields values(@SdeLayerName,@CadLayerName,@SdeField,@CadField,@FieldType,@CADTYPE)";
    }
        /// <summary>
        /// 判断数据库是否有指定键值的记录
        /// </summary>
        /// <param name="str">键值</param>
        /// <returns>是否存在记录的布尔值</returns>
        public static bool ExistsRecord(string str)
        {
            string strSql = "select * from CorrespondFields where SdeField = '" + str + "' and SdeLayerName = '" + PubVariant.sdeLayerName
            + "' and CadLayerName = '" + PubVariant.cadLayerName + "'";
            using (SqlConnection connection = new SqlConnection(PubVariant.ConnectionString))
            {
                connection.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = connection;
                cmd.CommandText = strSql;
                cmd.CommandType = CommandType.Text;
                SqlDataReader datareader = cmd.ExecuteReader();
                return datareader.HasRows;
            }

        }

        /// <summary>
        /// 执行带参数的Sql语句
        /// </summary>
        /// <param name="sqlParas">sql参数数组</param>
        /// <param name="strSql">要执行的sql语句</param>
        public static void ExecuteSql(SqlParameter[] sqlParas, string strSql)
        {
            using (SqlConnection connection = new SqlConnection(PubVariant.ConnectionString))
            {
                connection.Open();
                using (SqlCommand cmd = new SqlCommand(strSql, connection))
                {
                    foreach (SqlParameter sp in sqlParas)
                    {
                        cmd.Parameters.Add(sp);
                    }
                    cmd.ExecuteNonQuery();
                }
            }
        }

        /// <summary>
        /// 用datagridview的数据更新数据库
        /// </summary>
        /// <param name="dgv">datagridview</param>
        /// <returns>更新是否成功</returns>
        public static bool UpdataFromDGVtoDB(DataGridView dgv)
        {
            try
            {
                for (int i = 0; i < dgv.Rows.Count - 1; i++)
                {
                    string strCADTYPE;
                    if (dgv.Rows[i].Cells[1].Value.ToString().StartsWith("["))
                    {
                        strCADTYPE = "1";
                    }
                    else
                    {
                        strCADTYPE = "2";
                    }

                    SqlParameter[] sqlParas = new SqlParameter[]
                    {
                        new SqlParameter("@SdeLayerName", PubVariant.sdeLayerName),
                        new SqlParameter("@CadLayerName", PubVariant.cadLayerName),
                        new SqlParameter("@SdeField", dgv.Rows[i].Cells[0].Value.ToString()),
                        new SqlParameter("@CadField", dgv.Rows[i].Cells[1].Value.ToString()),
                        new SqlParameter("@FieldType", dgv.Rows[i].Cells[2].Value.ToString()),
                        new SqlParameter("@CADTYPE", strCADTYPE)
                    };

                    if (ExistsRecord(dgv.Rows[i].Cells[0].Value.ToString()))
                    {
                        ExecuteSql(sqlParas, PubVariant.strUpdateSql);
                    }
                    else
                    {
                        ExecuteSql(sqlParas, PubVariant.strInsertSql);
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "系统提示");
                return false;
            }
        }
时间: 2024-08-04 07:45:46

DataGridView数据更新至数据库-逐条更新的相关文章

DataGridView数据更新至数据库-整体更新

1.首先获取datagirdview的datatable DataTable dt = dataGridView1.DataSource as DataTable; 2.将其更新至数据库 public static bool UpdataSql(DataTable dt) { try { using (SqlConnection connection = new SqlConnection(PubVariant.ConnectionString)) { string strSql = "sele

linq 如何将DataGridView的数据更新到数据库中

问题描述 linq 如何将DataGridView的数据更新到数据库中 link如何将DataGridView的数据更新到数据库中,如果没有变化,就不要更新. 解决方案 那你要在更新前比对数据了 有变化再更新 NorthwindEntities db = new NorthwindEntities(); Customer cust = (from c in db.Customers where c.CustomerID == "LAWN" select c).Single(); cus

c#-在datagridview中修改数据,为什么数据库没有更新

问题描述 在datagridview中修改数据,为什么数据库没有更新 string connstr = "Provider=Microsoft.Jet.OleDb.4.0;"; connstr += @"Data Source=D:Merger201503016caohuanGEARCNC.mdb";//创建连接对象 OleDbConnection tempconn = new OleDbConnection(connstr); tempconn.Open(); O

关于数据库值更新收保存

问题描述 关于数据库值更新收保存 a表数据更新后,b表自动更新更改数据的行(没有更新则不会被更新到b表中),请问怎么做?谢谢! 解决方案 要不你就用数据库的触发器实现. 触发器主要是通过事件(增.删.改)进行触发而被执行的.其在表中数据发生变化时自动强制执行. 具体你通过搜索引擎找下样例,参照着做就可以了.

修改datagridview的内容后的更新问题

问题描述 如果我单击工具栏的按钮,数据库无法更新datagridview最后更改的那个单元格的内容,如果我单击普通的按钮则可以更新全部内容,工具栏按钮事件和普通按钮的事件里的代码是一模一样的啊,怎样才能实现单击工具栏的按钮更新全部内容???? 解决方案 解决方案二:有没高手指点一下啊,工具栏的按钮的单击事件跟普通按钮单击事件的代码完全一样啊,但为什么单击工具栏的按钮无法在数据库里更新datagridview最后修改单元格内容,而单击普通按钮则可以?解决方案三:datagridview显示的是计算

qt-如何在QSqlQueryModel中实现增删查改,然后如何与mysql数据库同步更新

问题描述 如何在QSqlQueryModel中实现增删查改,然后如何与mysql数据库同步更新 本人是个菜鸟在做一个简单的同学录系统,这是进入之后的界面 我想实现鼠标选取一个表格点击"修改同学信息"之后能对它在修改并且修改确定后能同步刷新MySQL数据库而且表格中的数据也更新. 下面是我的代码:#include ""record.h""#include ""ui_record.h""#include &qu

java 数据库的更新。。。。

问题描述 java 数据库的更新.... 比如插入数据的时候,需要更新两张表,但是第一张表更新成功了,第二张表更新失败了,怎么解决? 解决方案 不明白你说的需求时什么意思,如果你是想问第一个表更新成功,而第二个更新失败的话,然后需要需要将第一个表的记录撤销即回滚. 那么就可以使用事务,将对这两个表的操作放在同一个事务中,如果碰见操作失败则回滚. 其次,使用事务看你是用的持久层框架是什么了,如果是原始的JDBC的话,可以直接用事务函数:其它框架可以用框架的事务处理. 解决方案二: 使用事务,事务确

更新数据总返回0,但数据库没有更新

问题描述 我用的是C#+access,但是我更新的时候总是返回0.但是数据库没有更新,不知道怎么回事,请大家帮帮忙

数据源绑定的datagridview和combobox如何实时更新数据

问题描述 数据源绑定的datagridview和combobox如何实时更新数据 经过绑定,数据源更新后,空间里的数据并不能及时更新,要重新打开窗口才可!