Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环后零位无行_C#_Sql_Asp.net - Fatal编程技术网

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中打开连接?为什么不使用一个参数化的查询,比如更新查询和选择查询?