【发布时间】:2019-02-21 14:12:17
【问题描述】:
目前正在为我工作的公司开发一个小工具,该工具将处理数据库。我有几个类处理各种 SQL 函数,但每当我尝试将数据库中的特定数据放入 datagridview 时,我都会收到异常。
SQL函数:
public class OUsersDB
{
SqlConnection conn = new SqlConnection("Connection Information");
public SqlDataReader Select()
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT au.ApplicationId, au.UserId, au.UserName, au.MobileAlias, au.LastActivityDate, au.Name, sms.number, am.email FROM aspnet_users AS au " +
" JOIN aspnet_membership AS am ON au.userid=am.userid " +
" JOIN smsphonebooks AS sms ON au.name=sms.name";
SqlDataReader ur = cmd.ExecuteReader();
return ur;
}
}
Winform 数据网格函数
public void Usersdb()
{
OUsersDB oudb = new OUsersDB();
SqlDataReader ur = oudb.Select();
myDataUsers.Rows.Clear();
while (ur.Read())
{
object[] objUsers = {
ur["au_ApplicationId"].ToString(),
ur["au_UserId"].ToString(),
ur["au_UserName"].ToString(),
ur["au_MobileAlias"].ToString(),
ur["au_LastActivityDate"].ToString(),
ur["au_Name"].ToString(),
ur["au_Phone"].ToString(),
ur["au_Email"].ToString(), };
myDataUsers.Rows.Add(objUsers);
conn.Close();
}
我在代码中有一个类似的 sql 函数和对象数组,加载得很好,但是一旦到达这部分,我就会在
ur["au_ApplicationId"].ToString(),
它只是说
System.IndexOutOfRangeException: 'au_ApplicationId'
【问题讨论】:
-
选择
au.ApplicationId字段并尝试从阅读器获取au_ApplicationId。 -
该列不应该只命名为“ApplicationId”吗?尝试删除“au_”。其他列也一样。
-
为什么不直接使用
SqlDataAdapter.Fill(DataTable)?不知道你为什么要在这里手动填写DataTable myDataUsers。
标签: c# sql winforms datagridview