c# - 错误:位置 0 处没有行如何修复
问题描述
目前,错误是在更改用户名后。当它返回到图像 1 中的页面时,它崩溃了。
public void showdata()
{
cmd.CommandText = "Select * from Registration where Username='" + Session["user"] + "'";
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(ds);
lblUsername.Text = ds.Tables[0].Rows[0]["Username"].ToString();// error occur at here.
lblEmail.Text = ds.Tables[0].Rows[0]["Email"].ToString();
lblName.Text = ds.Tables[0].Rows[0]["Fullname"].ToString();
lblContact.Text = ds.Tables[0].Rows[0]["Contactnumber"].ToString();
lblPassword.Text = ds.Tables[0].Rows[0]["Password"].ToString();
}
我不明白这个错误。错误是位置 0 处没有行。
解决方案
位置 0 没有行- 这意味着您的结果集为空,您需要在访问任何行之前检查计数。
if (ds.Tables == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) {
// Throw the error or retrun the code
}
笔记:
- 每次从 Session 获取值之前都需要处理 null。您可以为此创建一个自定义类来处理所有会话。请参阅此链接以获取自定义类
在从行中获取值之前还需要处理 NULL。像使用下面的方法
public static T GetValueFromDataRow<T>(this DataRow row, string columnName) { if (row.Table.Columns.Contains(columnName) && (object)row[columnName] != DBNull.Value) { return (T)row[columnName]; } return default; }
推荐阅读
- python - 如何使用欧拉法求解方程组?
- java - 如何将 JSON 数据直接放入 SQLite 数据库?
- java - java - 为什么在Java中的空列表的情况下allMatch返回true?
- java - 为什么我的递归二进制搜索只能找到一些匹配项而不是全部?(爪哇)
- javascript - Intl 类型不存在属性区域设置?
- reactjs - 如何在 React 组件中嵌入 Twitch 对象而不在每次渲染时调用 New?
- c# - 如何以编程方式将容器上传到 Azure 容器注册表
- android - mockkStatic 和 mockkObject 不会在 Android 中模拟伴随对象
- c++ - qt-cmake 找到 MySQL 但它没有编译它
- android - 在使用之前检查来自另一个类的伴随对象是否已初始化