Visual Studio - Outlook 插件 - 从 SQL 数据库中填充组合框,为什么字符串值 return 是这样的?
Visual Studio - Outlook addin - Fill Combobox from SQL database and why does string value return like this?
我正在使用 MS Visual Studio 创建 outlook 插件。从功能区,用户单击一个按钮,打开一个带有一些组合框的 winform(称为 NewEntry),我想用来自 SQL 数据库的数据填充这些组合框。
为了填充单个组合框(命名公司),我的代码是:
public NewEntry()
{
InitializeComponent();
DataTable dt = new DataTable();
cnn.Open();
SqlCommand cmd = new SqlCommand("SELECT Name FROM PrivateContractors", cnn);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
cmd.Dispose();
cnn.Close();
Companies.DataSource = dt;
try
{
foreach (DataRow dr in dt.Rows)
{
Companies.Items.Add(Convert.ToString(dr["name"])); //this is line 67
}
}
catch (Exception e)
{
MessageBox.Show(Convert.ToString(e));
}
}
这是异常信息:
随后打开表单时,我的 ComboBox 填充了预期数量的字段,但它们都被命名为 System.Data.DataRowView
当我删除 foreach 语句时,没有出现异常,但组合框值仍然是 System.Data.DataRowView
有谁知道我哪里出错了,我可以做些什么来纠正这个错误?
解决方法在这里:
cnn.Open();
SqlCommand cmd = new SqlCommand("SELECT Name FROM PrivateContractors", cnn);
SqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
Companies.Items.Add(Convert.ToString(dataReader["Name"]));
}
dataReader.Close();
cmd.Dispose();
cnn.Close();
}
我正在使用 MS Visual Studio 创建 outlook 插件。从功能区,用户单击一个按钮,打开一个带有一些组合框的 winform(称为 NewEntry),我想用来自 SQL 数据库的数据填充这些组合框。
为了填充单个组合框(命名公司),我的代码是:
public NewEntry()
{
InitializeComponent();
DataTable dt = new DataTable();
cnn.Open();
SqlCommand cmd = new SqlCommand("SELECT Name FROM PrivateContractors", cnn);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
cmd.Dispose();
cnn.Close();
Companies.DataSource = dt;
try
{
foreach (DataRow dr in dt.Rows)
{
Companies.Items.Add(Convert.ToString(dr["name"])); //this is line 67
}
}
catch (Exception e)
{
MessageBox.Show(Convert.ToString(e));
}
}
这是异常信息:
随后打开表单时,我的 ComboBox 填充了预期数量的字段,但它们都被命名为 System.Data.DataRowView
当我删除 foreach 语句时,没有出现异常,但组合框值仍然是 System.Data.DataRowView
有谁知道我哪里出错了,我可以做些什么来纠正这个错误?
解决方法在这里:
cnn.Open();
SqlCommand cmd = new SqlCommand("SELECT Name FROM PrivateContractors", cnn);
SqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
Companies.Items.Add(Convert.ToString(dataReader["Name"]));
}
dataReader.Close();
cmd.Dispose();
cnn.Close();
}