使用c#将数据从表分配到标签

时间:2012-03-09 12:52:57

标签: c# asp.net

我在ASP.Net网络应用程序中使用c#。我有以下查询:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["chestionar"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("select * from personal,Intrebari where personal.cod_numeric_personal=@cnp AND Intrebari.id_intrebare=14 AND Intrebari.id_intrebare=15 ", con);
cmd.Parameters.AddWithValue("@cnp", Session["sesiune_cnp"]);
SqlDataReader rdr;

rdr = cmd.ExecuteReader();

while (rdr.Read())
{

    lbl1.Text = rdr["Nume"].ToString();
    intrebare6.Text = rdr["Intrebari"].ToString();
    intrebare7.Text = rdr["Intrebari"].ToString();

}

我希望id_intrebare = 14和15的这两个值将它分配给那两个标签。我怎么能参考那些?

4 个答案:

答案 0 :(得分:3)

为了从阅读器中读取内容,您需要将它包含在sql的select语句中,最好明确选择它而不是使用select *。

但您目前无法获得任何结果,因为id_intrebare不能同时为14和15

然后你需要比Intreabari读更多id_intreabare。

答案 1 :(得分:1)

试试这个,注意try catch块,我也改变了你的SQL查询。

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["chestionar"].ConnectionString);
string qry="select * from personal,Intrebari where personal.cod_numeric_personal=@cnp AND Intrebari.id_intrebare IN (14,15);

SqlCommand cmd = new SqlCommand(qry, con);
cmd.Parameters.AddWithValue("@cnp", Session["sesiune_cnp"]);
try
{  
   con.Open();    
   SqlDataReader rdr= cmd.ExecuteReader();
   if(rdr.HasRows)
   {    
        while (rdr.Read())
        {
            lbl1.Text = rdr["Nume"].ToString();
            intrebare6.Text = rdr["Intrebari"].ToString();
            intrebare7.Text = rdr["Intrebari"].ToString();
        }
   }
}
catch(SQLException ex)
{
   lblStatus.Text="An error occured"+ex.Message;
   throw ex;
}
finally
{
   con.Close();
   con.Dispose();
}

答案 2 :(得分:0)

如果要将文本分配给循环中的不同编号标签,可以使用当前页面的FindControl来引用控件ID

int numeOrdinal = reader.GetOrdinal("Nume");
int intrebariOrdinal = reader.GetOrdinal("Intrebari");
int i = 1;
while (rdr.Read()) {
    // Nume (Romanian) = Name
    page.FindControl("lbl" + i).Text = reader.IsDBNull(numeOrdinal)
        ? ""
        :  rdr.GetString(numeOrdinal);

    // Intrebari (Romanian) = Question
    page.FindControl("intrebari" + i + 5).Text = reader.IsDBNull(intrebariOrdinal)
        ? ""
        : rdr.GetString(intrebariOrdinal);

    i++;
}

答案 3 :(得分:-1)

尝试使用cmd.ExecuteScalar它将返回它找到的第一个reuslt,因此你必须很好地定义你的条件。它还返回对象类型,因此您必须转换结果