mysql未更新行_正在更新MySQL返回受影響的行,但實際上並未更新數據庫

我目前在使用MonoDevelop的Ubuntu上使用Mono,使用與數據庫中的表匹配的DataTable運行,並且應該嘗試更新它。正在更新MySQL返回受影響的行,但實際上並未更新數據庫

以下代碼使用從XML文件加載的數據集,該文件是從另一臺機器上的Dataset.WriteXML創建的。

try

{

if(ds.Tables.Contains(s))

{

ds.Tables[s].AcceptChanges();

foreach(DataRow dr in ds.Tables[s].Rows)

dr.SetModified(); // Setting to modified so that it updates, rather than inserts, into the database

hc.Data.Database.Update(hc.Data.DataDictionary.GetTableInfo(s), ds.Tables[s]);

}

}

catch (Exception ex)

{

Log.WriteError(ex);

}

這是插入/更新到數據庫中的代碼。

public override int SQLUpdate(DataTable dt, string tableName)

{

MySqlDataAdapter da = new MySqlDataAdapter();

try

{

int rowsChanged = 0;

int tStart = Environment.TickCount;

da.SelectCommand = new MySqlCommand("SELECT * FROM " + tableName);

da.SelectCommand.Connection = connection;

MySqlCommandBuilder cb = new MySqlCommandBuilder(da);

da.UpdateCommand = cb.GetUpdateCommand();

da.DeleteCommand = cb.GetDeleteCommand();

da.InsertCommand = cb.GetInsertCommand();

da.ContinueUpdateOnError = true;

da.AcceptChangesDuringUpdate = true;

rowsChanged = da.Update(dt);

Log.WriteVerbose("Tbl={0},Rows={1},tics={2},", dt.TableName, rowsChanged, Misc.Elapsed(tStart));

return rowsChanged;

catch (Exception ex)

{

Log.WriteError("{0}", ex.Message);

return -1

}

我正在嘗試上面的代碼,而rowsChanged變爲4183,我正在編輯的行數。但是,當我使用HeidiSQL來檢查數據庫本身時,它根本不會改變任何內容。

有沒有我失蹤的一步?

編輯:或者,能夠覆蓋數據庫中的所有行也可以。這是使用USB記憶棒更新遠程計算機的設置,強制它匹配源數據表。

編輯2:添加更多代碼示例以顯示DT的來源。 DataTable在調用函數中預先填充,並且所有行都有DataRow.SetModified();應用。

編輯3:其他信息。該表正在填充來自XML文件的數據。在評論中建議嘗試修復。

編輯4:添加調用代碼,以防萬一。

謝謝你的幫助。

+0

MySQL服務器/連接通常會設置是否返回受影響的行或匹配的行;這可能是這兩種環境的有效設置不同。 –

+1

DT是什麼?它在別處填滿了嗎?它只是在代碼中出現。 –

+0

添加了所需的信息。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值