今天在写一个OPC项目的时候遇到一个问题,其实就是更新数据库的问题,项目的大概目标是从OPC中读取到每一个ITEM(大概3K个)的value值,然后把读到的3k多个value值,更新进入数据库,thread(5000)每5秒钟读取并更新一次数据库表。
在写update语句的时候,用到了string.format,这种方法适用于同时更新多个数据表列的情况,原理是做一个数组,在语句中可以“列1={0}”这种传递参数的模式,在sql命令语句后面,排列出数组的成员。
代码:
string sql= String.Format("update 表1 set 列1 = '{0}'," +
"列2='{1}',列3='{2}',列4='{3}',列5='{4}',Updated=now() "
+ " where 列6='{5}' and 列7='{6}'",
前面读到的opcitemvalue1, value2, value3, value4, value5,
reader["location"], reader["doorname"]);
//Console.WriteLine(sql);
//这里需要重新打开一遍数据库
MySqlConnection conUpd = new MySqlConnection(connStr);
conUpd.Open();
MySqlCommand cmdUpd = new MySqlCommand(sql, conUpd);
cmdUpd.ExecuteNonQuery();
conUpd.Close();
在网上搜了一下定义:
String.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项
还挺概括准确,比我自己写的好多了
这玩意其实以前上课的时候就学过也用过不好,算是灰常常用的写sql update语句的方法了,但是到实际用的时候就忘记了,