簡體   English   中英

從WebForms中的查詢中獲取指定值

[英]Get specify value from Query in WebForms

我在從查詢中獲取指定值時遇到問題。 我的GridView收到一行,但是當我嘗試讀取該值以將其放入某個變量時,它說我沒有任何值。

else if (Request.QueryString.AllKeys.Contains("a"))
{
    String sql_user = "SELECT c1.ID, c1.SHORT_NAME, ao1.NAME, c1.REGON FROM (tabel1 c1 LEFT JOIN tabel2 ao1 ON c1.ID = ao1.ID WHERE c1.ID = ?";
    connection.OPEN();

    OleDbCommand sql_s = new OleDbCommand(sql_user, polaczenie);

    sql_s.Parameters.add("?", OleDbType.Integer).Value = Request.QueryString["a"];

    OleDbDataAdapter sqlDa = new OleDbDataAdapter(sql_s);

    DataTable dt = new DataTable();
    sqlDa.Fill(dt);

    GRID_VIEW1.DataSource = dt;

    GRID_VIEW1.DataBind();

    OleDbDataReader customer = sql_s.ExecuteReader();

    // i want to get SHORT_NAME so that one below i think dosent work

    // but any way it make me an Exception of any value not found but on GridView it shows me clearly one ROW
    learerLabel.Text = (String) cmd.ExecuteScalar();

    connection.Close();
}

我以許多方式(例如“會話”或“閱讀器”)來執行此操作,但是我現在不放棄所有嘗試,但始終會說我的查詢沒有任何價值。 我究竟做錯了什么? 謝謝

嘗試此操作,將參數名稱替換為@ID,有關傳遞參數的msdn文檔,請參見下面的鏈接

SELECT c1.ID, c1.SHORT_NAME, ao1.NAME, c1.REGON FROM (tabel1 c1 LEFT JOIN tabel2 ao1 ON c1.ID = ao1.ID WHERE c1.ID = @ID
sql_s.Parameters.add("@ID", OleDbType.Integer).Value = Request.QueryString["a"];

下面的msdn https://msdn.microsoft.com/zh-cn/library/bbw6zyha(v=vs.110).aspx中提供了有關傳遞參數的更多詳細信息。

更好的方法是:

    public class MyClass
{
    public int Id { get; set; }
    public string ShortName { get; set; }
    public string Name { get; set; }
    public int Regon { get; set; }
}

接下來,要從查詢中獲取數據,請嘗試以下操作:

            CustomClass item = new CustomClass();

        String sql_user = "SELECT c1.ID, c1.SHORT_NAME, ao1.NAME, c1.REGON FROM (tabel1 c1 LEFT JOIN tabel2 ao1 ON c1.ID = ao1.ID WHERE c1.ID = @id";

        using (var conn = new OleDbConnection("connectionString"))
        {
            conn.Open();
            using (var cmd = new OleDbCommand(sql_user, conn))
            {
                cmd.Parameters.Add("@id", OleDbType.Integer).Value = Request.QueryString["a"];
                cmd.Prepare();

                var reader = cmd.ExecuteReader();

                if(reader.Read())
                {
                    item.Id = (int)reader["ID"];
                    item.ShortName = reader["SHORT_NAME"].ToString();
                    item.Name= reader["NAME"].ToString();
                    item.Regon = (int)reader["REGON"];
                }
                conn.Close();
            }

        }

編輯:如果您不想使用它,則需要更改行:

OleDbDataReader customer = sql_s.ExecuteReader();

至:

            OleDbDataReader customer;
        var dr = sql_s.ExecuteReader();

        if (dr.Read())
            customer = dr;

試試這個,並把它寫工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM