为什么IP形字符串就传不进参数?

yuanliangyun 2009-06-26 11:09:00
if (ArticleAdo.pubComment(articleId, TextBox1.Text, userName))
.....
请指教,我用response.write(userName)显示是127.0.0.1,但发表评论后,ACCESS数据库里就只能插入articleId和TextBox1.Text的值,userName字段的值插不进去,全为空白。


如果userName为“大飞”,又一切正常。请指教,why?

还有一个可能相似的问题,Label1.Text = ArticleAdo.getTitle(articleId);response.write了articleId显示有值,可是总是显示错误“对象未引用到实例”,我以前有段时间还好好的。。。。

代码如下,请高手看看:

public partial class Comment : System.Web.UI.Page
{
string userName;
int articleId;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["userName"] != null)
{
userName = Session["userName"].ToString();
d1.Visible = false;
d2.Visible = false;
}
articleId = Convert.ToInt32(Request.QueryString["ArticleId"]);
//Label1.Text = ArticleAdo.getTitle(articleId);
getArticle();
}
private void getArticle() //取得Article数据
{


DataSet ds = ArticleAdo.readComment(articleId, "comment");


int cup = Convert.ToInt32(this.lb_CurrentPage.Text); //当前页数,初始化为地1页
PagedDataSource ps = new PagedDataSource();
ps.DataSource = ds.Tables["comment"].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 6; //每页显示的数据的行数
ps.CurrentPageIndex = cup - 1;
lb_count.Text = ps.DataSourceCount.ToString(); //获取记录总数
lb_page.Text = ps.PageCount.ToString(); //获取总页数
if (!IsPostBack)
{




for (int i = 1; i < ps.PageCount + 1; i++)
{
this.DropDownList1.Items.Add(i.ToString());

}
LinkUp.Enabled = true;
LinkDown.Enabled = true;
}
try
{
DropDownList1.SelectedItem.Text = cup.ToString();
DataList1.DataSource = ps;
DataList1.DataBind();
}
catch (Exception ex)
{
throw ex;
}

}

protected void LinkDown_Click(object sender, EventArgs e) //下一页按钮代码
{
try
{
lb_CurrentPage.Text = Convert.ToString(Convert.ToInt32(lb_CurrentPage.Text) + 1);
DropDownList1.SelectedValue = lb_CurrentPage.Text;
getArticle();
}
catch (Exception ex)
{
Response.Write("<script language=javascript>" + "alert(\"已经是最后一页\")" + "</script>");
lb_CurrentPage.Text = "1";
getArticle();
}

}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) //跳转到指定页代码
{
int page = Convert.ToInt16((DropDownList1.SelectedItem.Value));
lb_CurrentPage.Text = page.ToString();
getArticle();
}
protected void LinkUp_Click(object sender, EventArgs e) //上一页按钮代码
{
try
{
if (Convert.ToInt16(lb_CurrentPage.Text) > 1)
{
lb_CurrentPage.Text = Convert.ToString(Convert.ToInt32(lb_CurrentPage.Text) - 1);
DropDownList1.SelectedValue = lb_CurrentPage.Text;
getArticle();
}
else
{
Response.Write("<script language=javascript>" + "alert(\"已经是第一页\")" + "</script>");
}
}
catch (Exception ex)
{

Response.Write("<script language=javascript>" + "alert(\"已经是第一页\")" + "</script>");

}

}


protected void LinkFirst_Click(object sender, EventArgs e) //跳到第一页代码
{
if (lb_CurrentPage.Text != "1")
lb_CurrentPage.Text = "1";
else
{
Response.Write("<script language=javascript>" + "alert(\"已经是第一页\")" + "</script>");
}
getArticle();
}
protected void LinkLast_Click(object sender, EventArgs e) //跳到最后一页代码
{
if (lb_CurrentPage.Text.ToString() != lb_page.Text.ToString())
lb_CurrentPage.Text = lb_page.Text.ToString();
else
{
Response.Write("<script language=javascript>" + "alert(\"已经是最后一页\")" + "</script>");
}
getArticle();
}









protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{

if (CheckBox1.Checked == true)
{
d1.Visible = false;
userName = Request.UserHostAddress;

}
else
{
d1.Visible = true;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (userName == "")
{
Response.Write("<script>alert('请先登录或选择匿名发表');location='javascript:history.go(-1)';</script>");

}
else
{
if (ArticleAdo.pubComment(articleId, TextBox1.Text, userName))
{
Response.Write("<script>alert('发表成功 !');</script>");
Response.Redirect(Request.CurrentExecutionFilePath.ToString());
}
else
{
Response.Write("<script>alert('由于不知名的错误没能发表成功');location='javascript:history.go(-1)';</script>");

}
}
}



protected void linkButton1_Click(object sender, EventArgs e)
{
Response.Write("<script>window.open('login.aspx','','width=655px,height=655px');</script>");
}
}
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanliangyun 2009-07-07
  • 打赏
  • 举报
回复
再顶一下
尹成 2009-06-27
  • 打赏
  • 举报
回复
好好看看转义字符,还有数据库字段是否对应
满衣兄 2009-06-27
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{
if (Session["userName"] != null)
{
userName = Session["userName"].ToString();
d1.Visible = false;
d2.Visible = false;
}
articleId = Convert.ToInt32(Request.QueryString["ArticleId"]);
//Label1.Text = ArticleAdo.getTitle(articleId);
getArticle();
}


只有这段代码有点用,下面那一堆和这个问题没有联系.

1.这段代码是否需要加个IsPostBack判断?也就是下面这样:

protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack())
{
if (Session["userName"] != null)
{
userName = Session["userName"].ToString();
d1.Visible = false;
d2.Visible = false;
}
articleId = Convert.ToInt32(Request.QueryString["ArticleId"]);
//Label1.Text = ArticleAdo.getTitle(articleId);
getArticle();
}
}



2.插入语句写的是否有问题?username两边要有单引号
string str="insert into table1 values(...'"+username+"'...)";

3.数据库里的字段类型是否匹配?用"文本"类型.
4.你的这段描述极其模糊,可以自己先用断点调试的方法测试问题所在位置.
5.把insert语句提取出来在access数据库里执行,然后看结果是否正确,这样可以判断是否是语句有问题.
在access里建立一个试图,把语句放进去就可以执行了.
ranzige 2009-06-27
  • 打赏
  • 举报
回复
代码不全吧
yuanliangyun 2009-06-27
  • 打赏
  • 举报
回复
我这里其实是有这样的判断,但如果走else里的流程,当执行插入语句后数据库里userName字段会为空白
if (Session["userName"] != null)
{
userName = Session["userName"].ToString(); }
else
{
userName = Request.UserHostAddress;
}

yuanliangyun 2009-06-27
  • 打赏
  • 举报
回复
我是楼主,热心的大家们,
1.我的getIitle()是这么写的:
//由文章id得到文章名
public static string getTitle(int articleId)
{
string mystr = "SELECT [A_Title] FROM [Article] WHERE [A_Id]=@ai";
OleDbCommand mycomm = new OleDbCommand(mystr);
OleDbParameter aii = new OleDbParameter("@ai", OleDbType.Integer);
aii.Value = articleId;
mycomm.Parameters.Add(aii);
string title;
try
{
using (OleDbConnection conn = DBConn.getConnection())
{
mycomm.Connection = conn;
conn.Open();
title = mycomm.ExecuteScalar().ToString();
}

}
catch (Exception ex)
{
throw ex;
}
finally
{
mycomm.Dispose();
}
return title;
}



2.我试过将上述代码放在ispostback块里也是不行

3.字段确实是文本。而且Request.UserHostAddress应该也是字符串类型吧

4.我是新手确实不会断点调试,请大家教教我这种情况我应该在哪设置断点,怎么判断结果,谢谢


takako_mu 2009-06-27
  • 打赏
  • 举报
回复
轉義字符一下.
John_Hee 2009-06-27
  • 打赏
  • 举报
回复
1、对象未引用到实例 在 Page_Load 方法中 添加
if(!IsPostBack())
{
}

2、不能入库先要看数据库设计的字段类型是否对应,向楼上说的了解下转义字符

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧