Dropdownlist没有获取正确的ID来以表格形式显示数据

时间:2019-09-04 03:20:38

标签: c# postgresql visual-studio-2017

这是我第一次尝试使用Postgres进行c#练习的SEARCH函数。

我尝试使用下拉列表选择学生记录并以表格形式显示。但是它不能正确地从下拉列表中获取ID以检索正确的数据并以表格形式显示。语法中是否存在逻辑安排错误的安排?

connection.ConnectionString = 
ConfigurationManager.ConnectionStrings["constr"].ToString();
connection.Open();
NpgsqlCommand cmd = new NpgsqlCommand();
cmd.Connection = connection;
cmd.CommandText = "SELECT * FROM t_student";
cmd.Parameters.AddWithValue("@ID", DropDownList2.SelectedItem.Value);
cmd.CommandType = CommandType.Text;
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

foreach (System.Data.DataRow row in dt.Rows)
{
txtFname.Text = row["f_name"].ToString();
txtLname.Text = row["l_name"].ToString();
txtIC.Text = row["ic"].ToString();
}

connection.Close();

1 个答案:

答案 0 :(得分:1)

似乎您在选择命令中忘记了WHERE条件。 应该是这样的

cmd.CommandText = "SELECT * FROM t_student WHERE ID = @ID";

我以前从未使用过Postgres,但是异常很可能暗示Postgres没有隐式转换机制。因此,我想您需要自己转换类型。

修改

cmd.Parameters.AddWithValue("@ID", DropDownList2.SelectedItem.Value);

收件人

cmd.Parameters.Add(new SqlParameter() { SqlDbType = SqlDbType.BigInt, ParameterName = "@ID", Value = Int64.Parse(DropDownList2.SelectedItem.Value) });