① C# 資料庫批量更新問題
有一個辦法,可能是你想要的。但是不保證一定能實現你的目的。
在C#中有一個SqlCommandBuilder類,該類用來批量自動更新表數據變化,
說是自動更新,其實是根據已知的select語句,來自動生成其他的update,delete語句。
我以前項目的sqlhelper中,用這個類自定義過批量更新方法,在winform中使用一切ok。方法發你,看有用沒。
有些細節一定要注意的是,表狀態決定表數據的操作,比如表某行狀態是修改,那麼SqlCommandBuilder會執行update。但是這個狀態你要控制好。另外,你傳遞的select語句,一定要和你所構造的表結構接近吻合。看方法。
/// <summary>
/// operare database by commandbuilder
/// </summary>
/// <param name="connectinString">connectinString</param>
/// <param name="commandString">commandString</param>
/// <param name="sourceDable">do update or insert database table</param>
public static int ExecuteByCommandBuilder(string connectinString, string commandString, DataTable sourceDable, SqlParameter sqlparam)
{
SqlConnection sqlcon = new SqlConnection();
sqlcon.ConnectionString = connectinString;
using (SqlCommand sqlcommand = new SqlCommand(commandString, sqlcon))
{
if (sqlparam != null)
{ sqlcommand.Parameters.Add(sqlparam); }
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlcommand;
//DataSet ds = new DataSet();
//da.Fill(ds);
//ds.Tables[0].Merge(sourceDable, false);
SqlCommandBuilder sqlcommandbuilder = new SqlCommandBuilder(da);
return da.Update(sourceDable);
}
}
② 如何實現資料庫的批量插入與更新~~
幹嘛弄這么麻煩啊?數據量很大嗎?要是很大的話才需要你說的那種方式做壓縮.然後,你需要對得到的dataset根據其欄位名組合成sql
更新到本地資料庫.但是這個台麻煩了.
簡單的辦法是.在本地資料庫B上建立對遠程資料庫A的DBlink.然後對遠程資料庫上的表在本地建立別名.
那麼你訪問別名就和訪問本地表一樣簡單.只要你會sql
搞個資料庫的批量本地插入還是很簡單的.因為不知道你是什麼資料庫.因此你可以插下對應資料庫DBLINk的資料.不過這種方式就是沒法對數據壓縮.可能會佔用點帶寬
③ java mysql mybatis批量更新怎麼弄
Java mysql mybatis批量更新資料庫,採用以下寫法即可執行,但是資料庫連接必須配置:&allowMultiQueries=true
例如:jdbc:mysql://192.168.1.236:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
<updateid="batchUpdate"parameterType="java.util.List">
<foreachcollection="list"item="item"index="index"open=""close=""separator=";">
updatetest
<set>
test=${item.test}+1
</set>
whereid=${item.id}
</foreach>
</update>
MyBatis是支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis使用簡單的XML或註解用於配置和原始映射,將介面和Java的POJOs(Plan Old Java Objects,普通的Java對象)映射成資料庫中的記錄.
④ MYSQL資料庫欄位內容如何批量更新
MYSQL資料庫欄位內容批量更新:
利用sql中case when結構可以根據不同的條件批量更新,舉例如下:
UPDATE order
SET display_order = CASE id
WHEN 1 THEN 'value'
WHEN 2 THEN 'value'
WHEN 3 THEN 'value'
END
WHERE id IN (1,2,3)
這句sql的意思是,更新display_order 欄位,如果id=1 則display_order 的值為3,如果id=2 則 display_order 的值為4,如果id=3 則 display_order 的值為5。
⑤ C#如何將datatable中的數據批量更新到MYSQL資料庫
C#利用update更新數據到oracle資料庫:
第一步:打開oracle資料庫
public static string connString = "";
public static OracleConnection conn = null;
//打開資料庫連接
public static bool Open()
{
//從配置文件中獲取連接字元串
//配置文件需要放在項目目錄下的bin\Release中
connString = getXmlValue("connString");
conn = new OracleConnection(getXmlValue("connString"));
try
{
conn.Open();
Console.WriteLine("資料庫連接成功");
return true;
}
catch (System.Exception ex)
{
Console.Write(ex.Message);
MessageBox.Show("未能連接到資料庫");
return false;
}
第二步:執行更新方法:
public static int update(int ruleId, int equipmentId, String equipmentName, String propertyName, int ruleType, String ruleRequest, String ruleRequestOther, String ruleExplain)
{
String sql = "update Device_Attr t set t.BASEID = :equipmentId, t.BASENAME = :equipmentName,t.CA_NAME = :propertyName,t.CA_RULETYPE = :ruleType,t.CA_RULETEXT = :ruleRequest,t.CA_RULETEXT2 = :ruleRequestOther,t.CONTENT = :ruleExplain where t.CA_ID =:ruleId";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleParameter param_1 = new OracleParameter(":equipmentId", equipmentId);
cmd.Parameters.Add(param_1);
OracleParameter param_2 = new OracleParameter(":equipmentName", equipmentName + "$");
cmd.Parameters.Add(param_2);
OracleParameter param_3 = new OracleParameter(":propertyName", propertyName);
cmd.Parameters.Add(param_3);
OracleParameter param_4 = new OracleParameter(":ruleType", ruleType);
cmd.Parameters.Add(param_4);
OracleParameter param_5 = new OracleParameter(":ruleRequest", ruleRequest);
cmd.Parameters.Add(param_5);
OracleParameter param_6 = new OracleParameter(":ruleRequestOther", ruleRequestOther);
cmd.Parameters.Add(param_6);
OracleParameter param_7 = new OracleParameter(":ruleExplain", ruleExplain);
cmd.Parameters.Add(param_7);
OracleParameter param_8 = new OracleParameter(":ruleId", ruleId);
cmd.Parameters.Add(param_8);
int result = cmd.ExecuteNonQuery();
return result;
}
⑥ 如何批量更新access資料庫
更新查詢,查詢語句:
update 表1 set 表1.a=表2.a,表1.b=表2.b,表1.d=表2.d
from 表1,表2 where 表1.c=表2.c
祝你成功!
⑦ mysql大量數據更新採用什麼樣的方式比較好,20w條數據一次更新
建緩沖區。比如其他類型的高速緩存(redis等)作為中間緩沖層。
數據的查詢,更改首先在這個層處理,處理完再更新到對應的資料庫。
注意額外增加鎖,或者緩存機制防止緩存擊穿,雪崩導致系統崩潰。
⑧ c# winform 如何批量更新資料庫數據
在處理百萬級的數據方面,也不一定需要存儲過程,用C#一樣可以;ADO.NET提供了常用對象即可解決,就是數據適配器,在處理海量數據的時候,表現還是可圈可點的。先指定參數,接著一個循環,例: for (int i = 0; i < 100; i++)
{
dataset.Tables[0].Rows[i].BeginEdit();
dataset.Tables[0].Rows[i]["time"] = "2222-22-22 22:22:22";
dataset.Tables[0].Rows[i]["value"] = 100;
dataset.Tables[0].Rows[i]["id"] = "ID"+(i+10000);
dataset.Tables[0].Rows[i].EndEdit();
}接著一次提交更新就OK了數據適配器.Update(dataset.Tables[0]);然後釋放資源,把數據集合適配器的資源都釋放掉,連接也返回池中。 dataset.Tables[0].Clear();
適配器.Dispose
dataset.Dispose要注意的是,你在取記錄填充到數據集裡面的時候,不要一次去提取100萬條,那樣你的資料庫引擎會不堪重負的。要根據你的硬體配置,每次提取適量的數據,如果配置不是很高,一次提取個500-600就行了,這樣很快就能把數據在循環中處理完畢而不是卡到CPU暴漲直到死機。