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) });
这是我第一次使用 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) });