我正在创建一个允许用户在所选SQL数据库中插入各种记录的应用程序。我想知道的是使用从SQL表中提取的必需项来填充ComboBox的最有效方法。
以下是我的应用程序的当前代码段。
我的方法类的代码段:
public DataSet PullItems(string column, string db)
{
using (SqlConnection SqlCon = new SqlConnection(db))
{
using (DataSet dt = new DataSet())
{
//Check sql connection state
if (!(SqlCon.State == System.Data.ConnectionState.Open))
{
SqlCon.Open();
}
try
{
//define stored commands and populate adapter
using (SqlCommand com = new SqlCommand("PullComboBoxItem", SqlCon))
{
//define sql command types, timeout, and add procedure values
com.CommandType = CommandType.StoredProcedure;
com.CommandTimeout = 3;
com.Parameters.AddWithValue("@column", column);
//fill data adapter and return
SqlDataAdapter adap = new SqlDataAdapter(com);
adap.Fill(dt);
return dt;
}
}
catch
{
//Error message to be impleme
return null;
}
}
}
}
我的WPF窗口类的代码片段:
private void getItems(string id)
{
if (CypherDef.CheckEnvironment(CypherDef.envir))
{
txt_deliverymethod.ItemsSource = CypherClass.PullItems(id, CypherDef.eprocurementDBConnection).Tables;
}
else
{
MessageBox.Show("Connection Lost to Database");
}
}
来自GUI的XAML代码片段:
<ComboBox x:Name="txt_deliverymethod" DisplayMemberPath="DeliveryMethod" Width="150" Margin="20,5,0,0" Height="25" BorderThickness="1,1,1,2" SelectedIndex="0">
<!--TODO:Delivery Method and auto fill combo box items on form load-->
</ComboBox>
请原谅我的草率代码,因为我很新,但我欢迎提示和建设性的批评。如果你认为我的问题很模糊,我很乐意详细说明。
答案 0 :(得分:0)
错误在我的存储过程中。请参阅下面的错误和我的存储过程的解决方案。
以下是我的错误:
SELECT @column FROM [TABLE]
以下是我的修复:
SET @STRSQL = 'SELECT DISTINCT ' + @column + ' FROM [Table]'
EXECUTE SP_ExecuteSQL @STRSQL
再次感谢您的帮助。