我正在尝试查询来自另一列的特定列文本的数据。
基本上,我有一个供应商数据库,其中包含SupplierID和Country列。
我已经拥有该特定行的SupplierID,例如,它是14.我想根据14值获取Country列的文本值。
我通过以下代码(列表框)获得的供应商ID:
<asp:ListBox ID="SupplierListBox" runat="server"
DataSourceID="SupplierCompanyDataSource" DataTextField="Company"
DataValueField="SupplierID" Width="315px"
Height="80px"
onselectedindexchanged="SupplierListBox_SelectedIndexChanged"
AutoPostBack="True"></asp:ListBox>
代码:
string SupplierListvalue = SupplierListBox.SelectedItem.Value; //SupplierListvalue retrieves the SupplierID value
SqlDataReader rdr = null;
SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=ROG;Integrated Security=True");
SqlCommand cmd = new SqlCommand("select Country from SupplierDB", conn);
cmd.Connection = conn;
conn.Open();
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
TextBox1.Text = rdr["Country"].ToString();
MessageBox.Show("Connection Successful");
MessageBox.Show(rdr.ToString());
}
conn.Close();
答案 0 :(得分:2)
嗯,目前还不清楚主要问题是什么,所以我将向您展示一个使用ADO.NET从数据库中选择Country
列的工作示例,使用Parameters来避免SQL注入和{{1} } -statement以确保所有非托管资源作为连接被处置(关闭)。
using
答案 1 :(得分:0)
您需要研究使用参数化查询。试试这个:
string SupplierListvalue = SupplierListBox.SelectedItem.Value; //SupplierListvalue retrieves the SupplierID value
...
SqlCommand cmd = new SqlCommand("select Country from SupplierDB WHERE SupplierID = @supplierId", conn);
cmd.Parameters.AddWithValue("@supplierId", SupplierListvalue);
...
祝你好运。
答案 2 :(得分:0)
我正以错误的方式接近它。基本上以下是正确的代码:
<asp:SqlDataSource ID="SupplierCompanyDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ROGConnectionString %>"
SelectCommand="SELECT [Company], [SupplierID] FROM [SupplierDB] WHERE ([SupplierID] >= @SupplierID)">
<SelectParameters>
<asp:Parameter DefaultValue="14" Name="SupplierID" Type="Int32" /></SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SupplierCountryDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ROGConnectionString %>"
SelectCommand="SELECT [SupplierID], [Country] FROM [SupplierDB] WHERE ([SupplierID] = @SupplierID)">
<SelectParameters> <asp:ControlParameter ControlID="SupplierListBox" Name="SupplierID" PropertyName="SelectedValue" Type="Int32" /></SelectParameters></asp:SqlDataSource>
这就是工作!所以现在当我点击listbox1时,listbox2也会被点击,类似于级联。