gpt4 book ai didi

c# - 如何在代码隐藏中使用 SqlDataAdapter?

转载 作者:行者123 更新时间:2023-11-30 16:15:26 30 4
gpt4 key购买 nike

看来我的代码不完整或者我的语法有误,但我尽力想出了某种解决方案,但到目前为止没有成功......所以这就是我正在尝试做的事情:我有几个下拉框,想将每个下拉框的选定值分配给表适配器中的值。到目前为止,这是我的代码,但不确定缺少什么:

protected void Page_Load(object sender, EventArgs e)
{
ID = Convert.ToInt32(Request.QueryString["myID"]);
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT NAME, DEPARTMENT, LOCATION from MyTable WHERE ID = '" + ID + "' ", con);
DataTable dt= new DataTable();
da.Fill(dt);

ddl_Name.SelectedValue = dt[0].Name;
ddl_DEPARTMENT.SelectedValue = dt[0].DEPARTMENT;
ddl_LOCATION.SelectedValue = dt[0].LOCATION;
}

当我键入 dt[0].Name 时,我的问题就从这里开始,当我添加零时它似乎不喜欢。请帮助。谢谢

最佳答案

dtDataTable没有索引器,你需要 DataRow s 字段,因此您需要先通过 DataTable.Rows[index] 获取该行:

if(dt.Rows.Count > 0)
{
DataRow row = dt.Rows[0];
ddl_Name.SelectedValue = row.Field<string>("Name");
ddl_DEPARTMENT.SelectedValue = row.Field<string>("DEPARTMENT");
ddl_LOCATION.SelectedValue = row.Field<string>("LOCATION");
}

您无法直接访问该字段(没有强类型 DataTable )。你必须使用 DataRow.Field获取字段或旧的弱类型索引器的值:

object name = row["Name"];
  • 除此之外,您不应使用字符串连接来构建 SQL 查询。您可以通过 url 参数进行 sql 注入(inject)。使用 sql 参数来防止这种情况。
  • 我假设您使用的是 ViewState (默认),然后将此代码块放在 !IsPostBack 中检查,否则 SelectedIndexChanged事件不会触发,因为用户选择将从旧数据库值覆盖。

protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
ID = Convert.ToInt32(Request.QueryString["myID"]);
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT NAME, DEPARTMENT, LOCATION from MyTable WHERE ID = @ID", con);
DataTable dt= new DataTable();
da.SelectCommand.Parameters.AddWithValue("@ID", int.Parse(ID));
da.Fill(dt);
// Code above...
}
}

关于c# - 如何在代码隐藏中使用 SqlDataAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19612685/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com