C# 循环后零位无行
我需要以下方面的帮助:C# 循环后零位无行,c#,sql,asp.net,C#,Sql,Asp.net,我需要以下方面的帮助: foreach (DataRow dr in dt.Rows) { PrepareDocument(dr); } //update table entries to processed state try { string constring = "........"; string Query = @"update OnSiteWorkTx set Processed = 1 where VisitNumber = @company and P
foreach (DataRow dr in dt.Rows)
{
PrepareDocument(dr);
}
//update table entries to processed state
try
{
string constring = "........";
string Query = @"update OnSiteWorkTx set Processed = 1 where VisitNumber = @company and Processed = 0";
using (SqlConnection conDatabase = new SqlConnection(constring))
using (SqlCommand cmdDatabase = new SqlCommand(Query, conDatabase))
{
cmdDatabase.Parameters.AddWithValue("@company", MyVariable);
conDatabase.Open();
cmdDatabase.ExecuteNonQuery();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
private void PrepareDocument(DataRow dr)
{
string connectWrk = ".............";
using (SqlConnection connWrk = new SqlConnection(connectWrk))
{
string queryWrk = "SELECT Workdone FROM OnSiteWorkTx where VisitNumber='" + MyVarible + "' ";
SqlCommand cmdWrk = new SqlCommand(queryWrk, connWrk);
var ds = new DataSet();
var da = new SqlDataAdapter(cmdWrk);
da.Fill(ds);
var Workdone = ds.Tables[0].Rows[0]["Workdone"];
try
{
connWrk.Open();
tableWrk.AddCell(cellWrk);
tableWrk.AddCell(Workdone.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
if (ds.Tables.Count > 0 && ds.Tables.Rows.Count > 0)
{
var Workdone = ds.Tables[0].Rows[0][0];
...
在PrepareDocument
中,我有以下内容:
foreach (DataRow dr in dt.Rows)
{
PrepareDocument(dr);
}
//update table entries to processed state
try
{
string constring = "........";
string Query = @"update OnSiteWorkTx set Processed = 1 where VisitNumber = @company and Processed = 0";
using (SqlConnection conDatabase = new SqlConnection(constring))
using (SqlCommand cmdDatabase = new SqlCommand(Query, conDatabase))
{
cmdDatabase.Parameters.AddWithValue("@company", MyVariable);
conDatabase.Open();
cmdDatabase.ExecuteNonQuery();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
private void PrepareDocument(DataRow dr)
{
string connectWrk = ".............";
using (SqlConnection connWrk = new SqlConnection(connectWrk))
{
string queryWrk = "SELECT Workdone FROM OnSiteWorkTx where VisitNumber='" + MyVarible + "' ";
SqlCommand cmdWrk = new SqlCommand(queryWrk, connWrk);
var ds = new DataSet();
var da = new SqlDataAdapter(cmdWrk);
da.Fill(ds);
var Workdone = ds.Tables[0].Rows[0]["Workdone"];
try
{
connWrk.Open();
tableWrk.AddCell(cellWrk);
tableWrk.AddCell(Workdone.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
if (ds.Tables.Count > 0 && ds.Tables.Rows.Count > 0)
{
var Workdone = ds.Tables[0].Rows[0][0];
...
将表项更改为已处理状态的代码在Preparedocument(dr)
之前运行,然后语句找不到已处理的项现在为True,并在零位处给出错误no row。请尝试以下操作:
foreach (DataRow dr in dt.Rows)
{
PrepareDocument(dr);
}
//update table entries to processed state
try
{
string constring = "........";
string Query = @"update OnSiteWorkTx set Processed = 1 where VisitNumber = @company and Processed = 0";
using (SqlConnection conDatabase = new SqlConnection(constring))
using (SqlCommand cmdDatabase = new SqlCommand(Query, conDatabase))
{
cmdDatabase.Parameters.AddWithValue("@company", MyVariable);
conDatabase.Open();
cmdDatabase.ExecuteNonQuery();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
private void PrepareDocument(DataRow dr)
{
string connectWrk = ".............";
using (SqlConnection connWrk = new SqlConnection(connectWrk))
{
string queryWrk = "SELECT Workdone FROM OnSiteWorkTx where VisitNumber='" + MyVarible + "' ";
SqlCommand cmdWrk = new SqlCommand(queryWrk, connWrk);
var ds = new DataSet();
var da = new SqlDataAdapter(cmdWrk);
da.Fill(ds);
var Workdone = ds.Tables[0].Rows[0]["Workdone"];
try
{
connWrk.Open();
tableWrk.AddCell(cellWrk);
tableWrk.AddCell(Workdone.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
if (ds.Tables.Count > 0 && ds.Tables.Rows.Count > 0)
{
var Workdone = ds.Tables[0].Rows[0][0];
...
你能写出PreparedDocument的完整代码吗?我已经添加了codevar Workdone=ds.Tables[0]。行[0][“Workdone”];是问题所在。在使用该行之前,必须检查该位置是否存在行。检查(da.count>0),然后将其分配给WorkOne有许多不清楚的点。为什么在不需要数据行(并且查询始终相同)的情况下,循环表中的行并将数据行传递给PrepareDocument?为什么要在准备文档的try/catch中打开连接?为什么不使用一个参数化的查询,比如更新查询和选择查询?