我目前正在为一个公会的主页工作,该公会将在不久的将来以裂缝出现并运行,因此我试图尽快完成主页。
反正!我通常在VB.NET中编程主页,我编程应用程序时编程c#。但要在c#中变得更好,我选择用c#编程主页。
所以继承我的问题,我正在尝试制作一个foreach,它可以提取与地址栏中id相关的所有数据库内容,所以如果我的地址栏显示“ShowTopics.aspx?id = 1”那么一切都在在数据库中具有数字1的表(我使用一个名为fldovertopicid的字段,所以当有人在超文本中添加一个新的主题,然后它得到与顶视id相同的数字。)被拉出。虽然问题在于它似乎像vb.net编程一样容易实现工作。
所以继承我的代码:
在这段代码中我给这个方法命名,这样当我稍后在我的代码中写下这个名字时,就会知道它应该做什么。你可以看到我把'Where fldOverTopicID =“+ id;'所以我告诉代码我想使用fldOverTopicID作为中介,以便代码知道当地址栏号码与fldOverTopicID匹配时,它应该用相同的号码取出所有内容。
public DataTable GetUnderTopics(int id)
{
string strsql = "select fldid, fldtopicname, fldicon, fldcreator from tbltopics where fldOverTopicId=" + id;
MySqlCommand objCMD = new MySqlCommand(strsql);
return _objdata.GetData(objCMD, _con);
}
这是我想要提取主题的后端代码。我试图告诉它在这里做的是,如果地址栏中的数字是1,那么它应该提取其fldOverTopicID中有1的所有内容。但这是我得到了我的问题。当我制作那段代码时,我得到了2个错误:
'Forumfac.GetUnderTopics(int)'的最佳重载方法匹配有一些无效的参数
参数1:无法从'string'转换为'int'
Forumfac objfac = new Forumfac();
foreach (DataRow row in objfac.GetUnderTopics(Request.QueryString["id"]).Rows)
{
}
希望我能够清楚地解释我的问题。
提前致谢
答案 0 :(得分:3)
试试这个
string idFromQueryString = Request.QueryString["id"];
if (! string.IsNullOrEmpty( idFromQueryString))
{
int id = Convert.ToInt32(idFromQueryString );
Forumfac objfac = new Forumfac();
foreach (DataRow row in objfac.GetUnderTopics(id).Rows)
{
}
}
答案 1 :(得分:2)
使用objFac.GetUnderTopics(int.Parse(Request.Querystring["id"]))
您正在对以int作为参数的方法进行无效调用。所有查询字符串参数都是字符串。 int.Parse(string)
将字符串中的值转换为整数,或者如果字符串不是整数则抛出异常。还有一个TryParse(string, out int)
方法,它返回字符串是否可以转换并且不会抛出异常。
答案 2 :(得分:1)
我投票支持StackOverflowException的答案,因为它应该有效。但如果我写这篇文章,我会像这样使用TryParse ......
int id;
if (int.TryParse(Request.QueryString["id"], out id))
{
Forumfac objfac = new Forumfac();
foreach (DataRow row in objfac.GetUnderTopics(id).Rows)
{
}
}
如果无法解析id,它只需少一步,它将保证可靠的结果。