1

SQL データベースにデータを含むテーブルがあります。このテーブルには、id (int) と 2 つの列名 (それぞれ nvarchar(50) ) があります。今。言う。コードビハインドで C# を使用して、"nvarchar" の 1 つを文字列に配置したいと考えています。ブラウザの URL の ID を使用して、データを選択したいと考えています。

たとえば、私の URL は "http://localhost:49530/Forum/Thread.aspx?id=4" です。私のテーブルには、ThreadID、Topic、および Message があります。そのため、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 に答える