zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

数据库数据 更新 DataGridView
2023-09-14 08:59:41 时间

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

 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)

 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;

 }


转载:http://blog.csdn.net/foreverling/article/details/36390709


到底是先更新数据库还是先更新缓存? 很多小伙伴最近都在问我,在系统中引入缓存后,当向数据库中写入数据时,是先写数据库还是先写缓存呢?先写数据库和先写缓存有什么区别吗?今天,我们就一起来聊聊这个话题。
       最近,有个比较大的项目出现数据库死锁。经过分析数据库trace文件,发现死锁的是基础数据表疾病诊断。
Mysql数据库实践操作之————批量插入数据(100万级别的数据) 第一种方法:使用insert into 插入 从Redis每次获取100条数据,根据条件去插入到Mysql数据库中: 如果当前队列中的值大于1000条,则会自动的条用该方法,该方法每次获取从队列的头部每次获取100掉数据插入到Mysql数据库中,同时以当前队列的长度为插入条件。