я получаю ошибкуSqlTransaction на множественном запросе вставки
«Это SqlTransaction завершил, это уже не»
, а множественная вставка в одной таблице
mclDb.trans = mclDb.mCon.BeginTransaction();
try
{
foreach (DataGridViewRow dgvRow in dgvDetail.Rows) // get rows in details
{
ht.Clear();
string dtlPoCode = dgvRow.Cells[2].Value.ToString();
if (poCode == dtlPoCode) // check if po code matches
{
ht.Add("dtlPoCode", dtlPoCode);
ht.Add("dtlPoLine", dgvRow.Cells[3].Value.ToString());
ht.Add("dtlwhouse", dgvRow.Cells[12].Value.ToString());
ht.Add("dtlSkuCode", dgvRow.Cells[4].Value.ToString());
ht.Add("dtlUom", dgvRow.Cells[6].Value.ToString());
ht.Add("dtlmrQty", dgvRow.Cells[7].Value.ToString());
ht.Add("dtlBCode", dgvRow.Cells[10].Value.ToString());
ht.Add("dtlBExp", dgvRow.Cells[11].Value.ToString());
ht.Add("dtlBin", dgvRow.Cells[9].Value.ToString());
ht.Add("custPoCode", custPoCode);
ht.Add("grnCode", grnCode);
ht.Add("refCode", refCode);
mclDb.IUD(ht);
}
}
MessageBox.Show("Transaction Complete");
mclDb.trans.Commit();
}
catch (Exception error)
{
MessageBox.Show(error.Message, "Error Encountered", MessageBoxButtons.OK, MessageBoxIcon.Error); mclDb.trans.Rollback();
}
здесь мой метод ВМС
public void IUD(Hashtable ht)
{
try
{
Connect();
string cmd = "";
cmd = mStatements.getQuery(ht);
mAdptr = new SqlDataAdapter(cmd,mCon);
ds = new DataSet();
mAdptr.Fill(ds);
}
catch (Exception Ex)
{
throw new Exception(Ex.Message);
}
}
и мой метод GetQuery
public string getQuery(Hashtable ht)
{
StringBuilder qry = new StringBuilder();
qry.Append(" Insert into mTable values ");
qry.Append(" ('" + ht["custPoCode"] + "','" + ht["dtlPoCode"] + "', ");
qry.Append(" " + ht["dtlPoLine"] + ",'" + ht["dtlwhouse"] + "', ");
qry.Append(" '" + ht["dtlSkuCode"] + "','" + ht["dtlUom"] + "', ");
qry.Append(" " + ht["dtlmrQty"] + ",'" + ht["grnCode"] + "', ");
qry.Append(" '" + ht["refCode"] + "','" + ht["dtlBCode"] + "', ");
qry.Append(" '" + ht["dtlBExp"] + "','" + ht["dtlBin"] + "', ");
qry.Append(" '" + ht["dtlmrQty"] + "','') ");
return qry.ToString();
}
количество строк, которые будут вставлены в таблице будет зависеть от того, сколько строк выбираются в dgvDetail (который является DataGridView)
любые предложения в том, как использовать SqlTransaction на мои коды? ТИА
Внутри 'UID' метод, что делает метод' Connect'? Также почему адаптер данных, вы хотите выполнить запрос sql sql, правильно? –
@IvanStoev Connect на самом деле является моим методом подключения к базе данных и адаптера, поэтому я также могу использовать запрос выбора для извлечения данных в datagrids – Isaiah
Но он уже будет открыт, иначе строка 'mclDb.trans = mclDb.mCon.BeginTransaction(); 'потерпит неудачу –