我在文件夹中有两个文本文件,两个数据表和db中的两个表。每个文件都进入一个数据表,并最终插入到他们在数据库中的表中,所有这些都正常工作,但是我试图将其设置为如果插入失败则文件不会被处理。我一直在尝试使用try catch,但是我无法让它工作,似乎当出现错误时,文本文件被处理并填充在表中。
foreach file enumerate folder
{
if (folder path contains file1)
try
{
fill datatable
insert into database
}
catch {}
else if (folder path contains file2)
try
{
fill datatable
insert into database
}
catch {}
答案 0 :(得分:1)
如果我理解了这个问题,那么下面的代码可能有所帮助:
bool databaseUpdatedSuccessfully = false;
using (var Conn = new SqlConnection(_ConnectionString))
{
try
{
Conn.Open();
using (var ts = new System.Transactions.TransactionScope()) {
using (SqlCommand Com = new SqlCommand(ComText, Conn))
{
// db work
}
ts.Complete();
databaseUpdatedSuccessfully = true;
}
}
catch (Exception Ex)
{
// log exception
}
}
if (databaseUpdatedSuccessfully)
{
// process files !
}
以上代码改编自another transaction question的接受答案。