我无法将数据库中的数据导入文本框

时间:2016-04-05 06:01:00

标签: c#

string connstring = ConfigurationManager.ConnectionStrings["electionConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
    {
        updatedata();
    }
public void updatedata(){
    int ward_no =Convert.ToInt32((Session["wardno"]));
    string query = "select ward_no,part_no,part_leader1_name,part_leader1_mob,part_leader2_name,part_leader2_mob,t_streets,t_families,t_electoral,t_male,t_female,t_others from f_field_details where ward_no=@ward_no";
    MySqlConnection con = new MySqlConnection(connstring);
    con.Open();
    MySqlCommand cmd = new MySqlCommand(query, con);
    cmd.Parameters.AddWithValue("@ward_no", ward_no);
    MySqlDataReader reader = cmd.ExecuteReader();
    DataTable dt = new DataTable();

    if (reader.Read())
    {

        txtward.Text = reader["ward_no"].ToString();
        txtpart.Text = reader["part_no"].ToString();
        txtleadername.Text = reader["part_leader1_name"].ToString();
        txtphne1.Text = reader["part_leader1_mob"].ToString();
        txtname1.Text = reader["part_leader2_name"].ToString();
        txtphneno.Text = reader["part_leader2_mob"].ToString();
        txtstreets.Text = reader["t_streets"].ToString();
        txtfamilies.Text =reader["t_families"].ToString();
        txttotvotes.Text = reader["t_electoral"].ToString();
        txtMen.Text = reader["t_male"].ToString();
        txtWomen.Text = reader["t_female"].ToString();
        txtothers.Text = reader["t_others"].ToString();
    }

}
}

这是我的编码,用户在点击提交按钮后在上一页中输入数据后我从数据库中获取数据我将它们重定向到下一页这个页面,问题是数据将被插入到数据库中,但是从数据库中检索数据将无法正常工作。使用查询中的where条件获取数据,条件的对象来自使用会话的上一页。问题是数据没有显示在文本框中

1 个答案:

答案 0 :(得分:2)

您的代码中的修正很少:

  1. 会话["字符串"]将返回对象,可能或可能不会转换为整数,因此最好使用int.TryParse()代替Convert.To..()
  2. 如果读者没有行,Reader可能会获得空引用,因此我建议您在从中访问值之前检查reader.HasRows。或使用While(reader.Read())
  3.   

    使用DataReader检索数据涉及创建实例   Command对象,然后通过调用创建DataReader   Command.ExecuteReader用于从数据源检索行。该   下面的示例说明了使用DataReader所在的读者   表示有效的DataReader,命令表示有效的Command   对象

    1. 使用Parameters.Add() instead for Parameters.AddWithValue()
    2. 所以你的代码看起来像这样(这也可以解决你的问题):

      int ward_no=0;
      int.TryParse(Session["wardno"].ToString(), out   ward_no);
       string query = "select ward_no,part_no,part_leader1_name,part_leader1_mob,part_leader2_name,part_leader2_mob,t_streets,t_families,t_electoral,t_male,t_female,t_others from f_field_details where ward_no=@ward_no";
      MySqlConnection con = new MySqlConnection(connstring);
      con.Open();
      MySqlCommand cmd = new MySqlCommand(query, con);
      cmd.Parameters.Add("@ward_no", MySqlDbType.Int32).Value = ward_no; //this will be the type of field
      MySqlDataReader reader = cmd.ExecuteReader();            
      DataTable dt = new DataTable();
      while (reader.Read())
      { 
          // assign values here
      }