c# - 数据库错误 : There is no row at position 0

标签 c# asp.net sql sql-server if-statement

我相信几个月前有人问过这个问题,但我相信我的情况不同,同样的规则可能不适用。

每次我执行这个方法都会弹出同样的错误。位置 0 处没有行。如果我将 [0] 更改为 [1] 或 [15]; [1] 等处没有行。这是否意味着我的数据库甚至没有连接?我是否应该编写某种 if 语句来确定检查行是否存在?

    public bool UpdateOrderToShipped(string order)
{
    orderNumber = order;
    string batch = ConfigurationManager.AppSettings["SuccessfulOrderBatch"];
    string statement = "UPDATE SOP10100 SET BACHNUMB = '"+ batch +"' WHERE SOPNUMBE = @SOPNUMBE";
    SqlCommand comm = new SqlCommand(statement, connectionPCI);
    comm.Parameters.Add("SOPNUMBE", orderNumber);
    try
    {
        comm.Connection.Open();
        comm.ExecuteNonQuery();
        comm.Connection.Close();
    }
    catch(Exception e)
    {
        comm.Connection.Close();
        KaplanFTP.errorMsg = "Database error: " + e.Message;
    }

    statement = "SELECT SOPTYPE FROM SOP10100 WHERE SOPNUMBE = @SOPNUMBE";
    comm.CommandText = statement;
    SqlDataAdapter da = new SqlDataAdapter(comm);
    DataTable dt = new DataTable();
    da.Fill(dt);
    soptype = dt.Rows[0]["SOPTYPE"].ToString();    //errror here

    return true;
}

最佳答案

这很简单……这意味着您的查询没有返回任何结果。您始终必须进行防御性编码,并在尝试对其进行索引之前检查 Rows 数组中是否包含任何项目。像这样的东西:

if (dt.Rows.Count > 0)
    soptype = dt.Rows[0]["SOPTYPE"].ToString();
else
    somethingWentWrong();

关于c# - 数据库错误 : There is no row at position 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7795066/

相关文章:

c# - fragment visual studio xamarin 上的访问按钮

c# - TFS 单元测试在开发机器上通过但在构建机器上失败

javascript - asp net 中的确认是或否消息

javascript - 使用 javascript 设置属性

mysql - 将内部连接和 where 子句添加到 INSERT INTO ON DUPLICATE KEY UPDATE

c# - 仅替换 JSON 对象的特定部分

c# - 命名迭代器和异常

mysql - 如果列返回空结果,请检查 MySQL 中的另一列

c# - Lambda 表达式 - 如何从 IEnumerable<Object> 向 where 子句提供值?

sql - SQL 中的分页 - 性能问题