1

我的 sql 数据库中有一个包含数据的表。在此表中,我有 id (int) 和两个两列名称(每个 nvarchar(50) )。现在。说。在代码隐藏中使用 C#,我想将“nvarchar”之一放在一个字符串中。我希望使用浏览器 url 中的 id 来选择数据。

可以说,我的网址是“http://localhost:49530/Forum/Thread.aspx?id=4” 在我的表中,我有 ThreadID、主题和消息。因此,它需要将 ThreadID=4 的“Topic”中的数据写入预定义的变量中。

我希望在 page_load 后面的代码中做到这一点。最后在 aspx 页面上的标签中显示该数据。

我完全空白。(以及谷歌搜索的内容。已经用谷歌搜索了一整天)。

我现在已经使用给我的示例编写了一些代码。出了点问题。

SqlConnection conn_Kategori = new SqlConnection(WebConfigurationManager.ConnectionStrings["Computer_Klubben_CommunitySiteConnectionString"].ConnectionString);
int TraadVaelger = int.Parse(Request.QueryString["id"]);
string OutputToLabel;

    using (conn_Kategori)
    {
        conn_Kategori.Open();
        SqlCommand OverfoerTraadNavnet = new SqlCommand("SELECT KatNavn FROM KategoriTabel WERE Katnavn = @KatNavn", conn_Kategori);
        OverfoerTraadNavnet.CommandType = CommandType.Text;
        OverfoerTraadNavnet.Parameters.AddWithValue("@KatNavn", TraadVaelger);
        OverfoerTraadNavnet.ExecuteReader();
        OutputToLabel = OverfoerTraadNavnet.ExecuteReader().ToString();
        Stien.Text = OutputToLabel;
        conn_Kategori.Close();
    }
4

3 回答 3

1
string OutputToLabel = string.Empty;

if(!string.IsNullOrEmpty(Request.QueryString["id"]))
{
    int ThreadID = 0;
    int.TryParse(Request.QueryString["id"], out ThreadID);
    if(ThreadID > 0)
    {
        string Sql = "SELECT Topic FROM <tablename> WHERE ThreadID = @ThreadID;";
        using (SqlConnection conn = new SqlConnection(connString))
        {
            SqlCommand cmd = new SqlCommand(Sql, conn);
            cmd.Parameters.Add("@ThreadID", ThreadID);
            try
            {
                conn.Open();
                OutputToLabel = cmd.ExecuteScalar().ToString();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
    }
}
于 2012-10-08T19:07:22.030 回答
0

而不是你的线路:

OverfoerTraadNavnet.ExecuteReader();
OutputToLabel = OverfoerTraadNavnet.ExecuteReader().ToString();

你可能会想要这样的东西:

SqlDataReader myReader = OverfoerTraadNavnet.ExecuteReader();
while (myReader.Read())
{
    OutputToLabel = Convert.ToString(myReader["KatNavn"]); // Substitute your "Amiga-Hardware" column name here
}
myReader.Close();

更多详细信息在SqlCommand.ExecuteReader 文档中,例如传递 CommandBehavor以隐式关闭阅读器。

于 2012-10-08T21:27:58.897 回答
0

我得到了一些帮助....下面的代码成功了。:-)

SqlConnection conn_Kategori = new SqlConnection(WebConfigurationManager.ConnectionStrings["Computer_Klubben_CommunitySiteConnectionString"].ConnectionString);
    //int TraadVaelger = int.Parse(Request.QueryString["id"]);
    string OutputToLabel;
    int TraadVaelger;
    if (!int.TryParse(Request.QueryString["id"], out TraadVaelger))
    {
        //Errorhandling
        Response.Write("No id was givin");
    }

    using (conn_Kategori)
    {
        conn_Kategori.Open();
        SqlCommand OverfoerTraadNavnet = new SqlCommand("SELECT KatNavn FROM KategoriTabel WHERE KategoriID = @KategoriID", conn_Kategori);
        OverfoerTraadNavnet.CommandType = CommandType.Text;
        OverfoerTraadNavnet.Parameters.AddWithValue("@KategoriID", TraadVaelger);
        OutputToLabel = OverfoerTraadNavnet.ExecuteScalar().ToString();
        Stien.Text = OutputToLabel;
        conn_Kategori.Close();
    }
于 2012-10-09T07:47:51.367 回答