Dropdownlist 没有获取正确的 ID 以在表单中显示数据

Dropdownlist doesn't grab correct ID to display data in form

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

我尝试使用下拉列表 select 学生记录并以表格形式显示。但它没有从下拉列表中正确获取 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();

您似乎在 select 命令中忘记了 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) });