0

cardDetailsID が 5 であると仮定します。

データベースの cardDetails テーブルのレコード番号 5 を見ると、他のフィールドに「bgcolour」と「borderstyle」が含まれていることがわかります。したがって、この特定のレコードについては、cardDetailsID = 5、bgcolour = 青、bordersytle= solid を取得しました。

cardDetailsID から bgcolour と bordersyle の設定 (青と実線) を取得できるようにしたいと考えています。

これがこれまでのコードです。クエリ文字列の値は機能しています (番号「5」が渡されています) が、行の残りの設定を取得するにはどうすればよいですか?

    cardDetailsIDrv.Text = Request.QueryString["cardDetailsID"];
    cardDetailsIDrv.Visible = false;

    //create Connection
    SqlConnection myConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnString"]);


    //create Command
    SqlCommand getCardDetailsCMD = new SqlCommand("SELECT * FROM cardDetails WHERE cardDetailsID =" + Convert.ToInt32(cardDetailsIDrv.Text), myConnection);
    myConnection.Open();

    //create datareader
    SqlDataReader myReader = getCardDetailsCMD.ExecuteReader();

    //code works properly up till here


    try
    {
        //Using DataReader to retrieve info from the database and display it on the panel

        while (myReader.Read())
        { 
           //I'm guessing here is where I'm messing things up
           pnlCardps.BackColor = Color.FromName(myReader["bgcolour"].ToString());
           pnlCardps.BorderStyle = (BorderStyle)Enum.Parse(typeof(BorderStyle), myReader["borderstyle"].ToString());

        }
    }

    finally
    {
        if (myReader != null)
        {
            myReader.Close();
        }

        if (myConnection != null)
        {
            myConnection.Close();
        }
    }

問題が解決しました!!私がしなければならなかったのは、while ループのコードを次のように微調整することだけです。

string bgColour = myReader["bgColour"].ToString();
pnlCardrv.BackColor = Color.FromName(bgColour);

string borderColour = myReader["borderColour"].ToString();
pnlCardrv.BorderColor = Color.FromName(borderColour);
4

2 に答える 2

1

まず、detailsIDクエリ文字列を介して渡される を取得してから、クエリを実行する必要があります。

int id;
if(int.TryParse(Request.QueryString["detailsID"],out id))
{

string sql= string.Format("select .. from .. where id={0}",id);// using SqlParameter is much better and secure
// and execute your query and fetch the data reader
while(reader.Read())
{
 // bla bla bla
}
}
于 2012-05-15T20:18:54.387 に答える
0

Request.QueryString["detailsID"]クエリ文字列変数の値を取得します。

if (Request.QueryString("detailsID") == null || Request.QueryString("detailsID").Length <= 0 || !int.TryParse(Request.QueryString("detailsID"), out detailsID) || MessageThreadID <= 0)
{
    //This is my standard exception, but you can handle it how you want.
    throw new Exception("Error: unable to load detailsID.  Request.QueryString.count: " + Request.QueryString.Count + " Request.QueryString(\"detailsID\"): " + Request.QueryString("detailsID"));
}
于 2012-05-15T20:15:02.603 に答える