有人可以告诉我我做错了什么吗?我试图在页面加载时自动调用该方法,但是,它不起作用。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
customerInformation();
}
}
protected void ddNames_SelectedIndexChanged(object sender, EventArgs e)
{
customerInformation();
}
private void customerInformation()
{
string dbString = ConfigurationManager.ConnectionStrings["TechSupportDBConString"].ConnectionString;
string query = "SELECT * FROM Customers WHERE Name='" + ddNames.Text + "'";
SqlConnection Connection = new SqlConnection(dbString);
Connection.Open();
SqlCommand Com = new SqlCommand(query, Connection);
SqlDataReader reader = Com.ExecuteReader();
if (reader.Read())
{
lblName.Text = reader["Name"].ToString() + "'s Personal Information";
lblAddress.Text = reader["Address"].ToString() + "\n" + reader["City"].ToString() + " " + reader["State"].ToString() + " " + reader["ZipCode"].ToString();
lblPhone.Text = reader["Phone"].ToString();
lblEmail.Text = reader["Email"].ToString();
reader.Close();
Connection.Close();
}
}
答案 0 :(得分:2)
好的查看代码我可以看到读取器和数据库的连接在循环中本身是关闭的,不应该这样做。
C
接下来我注意到下拉列表选中的文字/值应该是SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
//populate fields from reader
}
}
else
{
lbl.Text = "No records found.";
}
reader.Close();
Connection.Close();
,或者是值传递ddNames.SelectedItem.Text
的情况。
接下来要确保每个读者名称应与表列名称完全匹配。
最后但并非最不重要的是,在应用ddNames.SelectedValue
之前总是进行正确的空值检查。如果任何列具有空值ToString()
将无法转换。
希望这有帮助。