我有一个表 TümEnvanter$ ,它有 2 列设备代码( Ekipman )和它们的描述( Tanım )。

用户从组合框中选择设备,我希望所选设备的描述出现在他们从组合框中选择时的标签中。

这是我尝试过的:

SqlCommand cmdTanim = new SqlCommand("select Tanım from TümEnvanter$ where Ekipman = '" + comboBox_ekipman.Text + "'", connect);
connect.Open();

SqlDataReader reader = cmdTanim.ExecuteReader();
string tanim = reader.ToString();

labelTanim.Text = "Ekipman Tanımı: "+tanim+" ";

当我使用此代码时,我进入了标签:
Ekipman Tanımı: System.Data.SqlClient.SqlDataReader

我怎样才能解决这个问题?谢谢你。

最佳答案

如果您只期望一个值,那么 ExecuteScalar 比使用阅读器简单得多,即

labelTanim.Text = Convert.ToString(cmdTanim.ExecuteScalar());

一般来说,也许可以考虑像“Dapper”这样的工具,即使在多行情况下也可以使这变得简单,并且可以轻松解决 SQL 注入(inject)问题:
string s = connect.QuerySingle<string>(
    "select Tanım from TümEnvanter$ where Ekipman = @val", // command
    new { val = comboBox_ekipman.Text }); // parameters

10-05 22:17