Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net C#根据传递的查询字符串从sql检索数据_C#_Asp.net_Query String_Datareader - Fatal编程技术网

asp.net C#根据传递的查询字符串从sql检索数据

asp.net C#根据传递的查询字符串从sql检索数据,c#,asp.net,query-string,datareader,C#,Asp.net,Query String,Datareader,假设cardDetailsID为5 查看数据库cardDetails表中的记录编号5,可以看到其其他字段包括“BGCOLOR”和“borderstyle”。因此,对于这个特定的记录,我得到了cardDetailsID=5,bgcolour=blue,bordersytle=solid 我希望能够从cardDetailsID获取BGColor和bordersyle设置(蓝色和纯色) 这是到目前为止的代码。querystring中的值正在工作(正在传递数字“5”),但现在如何获取行的其余设置

假设cardDetailsID为5

查看数据库cardDetails表中的记录编号5,可以看到其其他字段包括“BGCOLOR”和“borderstyle”。因此,对于这个特定的记录,我得到了cardDetailsID=5,bgcolour=blue,bordersytle=solid

我希望能够从cardDetailsID获取BGColor和bordersyle设置(蓝色和纯色)

这是到目前为止的代码。querystring中的值正在工作(正在传递数字“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);
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"));
}

if(Request.QueryString(“detailsID”)==null | | Request.QueryString(“detailsID”).Length首先,必须获取通过查询字符串传递的
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
}
}

你正在发出的SQL查询是什么?当你说它不起作用时,你遇到了什么错误或其他问题?返回的值是你期望的值吗,即“红色”、“蓝色”等?@marc_s没有必要对这个可怜的家伙使用粗体字。我认为他没有恶意。=)@Yatrix我没有收到任何错误,只是面板(pnlCardsps)上没有显示“蓝色背景”和“实心边框”。但我要问的是,您的查询返回了“蓝色”一词。如果您不想得到所需的内容,查询不必出错。我只是确保您没有返回空值或“蓝色”而不是“蓝色”“。我猜该方法是区分大小写的,但尚未测试。@Rika如果这不能回答您的问题,则您需要向我们展示如何访问数据库以获取记录。是的,我已经用SQLConnection、SQLCommand和SQLDataReader完成了这部分的工作。我在while循环中所做的事情让我困惑。