我又来了 新问题有出现了

deant1982 2008-04-13 07:41:43
private void Page_Load(object sender, System.EventArgs e)
{
if (Session.Count==0)
Response.Redirect("denglu.aspx");
else
{
if(!IsPostBack)
{
//postid=Request["postid"];

}
myconnection.ConnectionString="server=deant;uid=sa;pwd=sa;database=bbs";
BindData();
}
private void BindData()
{
string strcmd1 = "select * from GuestBook where PostID="+Request["PostID"];
SqlDataAdapter da1 = new SqlDataAdapter(strcmd1,myConnection);
string strcmd2 = "select * from GuestBook where ParentID="+Request["PostID"]; SqlDataAdapter da2 = new SqlDataAdapter(strcmd2,myConnection);
DataSet ds = new DataSet();
da1.Fill(ds,"host");
da2.Fill(ds,"guest");
Lbltitle00.Text = ds.Tables["host"].Rows[0][4].ToString(); //留言的主题
int recount = ds.Tables["guest"].Rows.Count;//回复的次数
lbltimes00.Text = recount.ToString();
lblwritetime00.Text = ds.Tables["host"].Rows[0][2].ToString();//留言的时间
lblcontent.Text = ds.Tables["host"].Rows[0][5].ToString();//留言的 内容
HyperLink1.Text = ds.Tables["host"].Rows[0][3].ToString();//留言的作者
HyperLink1.NavigateUrl = "authorinfo.aspx?UserName=" + HyperLink1.Text; //将作者作为参数传到author.aspx
DataList1.DataSource = ds;
DataList1.DataMember = "guest";
DataList1.DataBind();
myConnection.Close();
}
protected void Btnsubmit_Click(object sender, EventArgs e)
{
string name = Session["UserName"].ToString();
string inscmd = "insert into GuestBook values('"+Request["PostID"]+"',getdate(),'"+name+"',' ','"+Txtresponse.Text+"')";
SqlCommand myCommand = new SqlCommand(inscmd,myConnection);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
myConnection.Close();
BindData();
Txtresponse.Text = "";
}
protected void Btnrewrite_Click(object sender, EventArgs e)
{
Txtresponse.Text = "";
}



将 varchar 值 '19;' 转换为数据类型为 int 的列时发生语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 将 varchar 值 '19;' 转换为数据类型为 int 的列时发生语法错误。

源错误:


行 83: SqlCommand mycmd=new SqlCommand(inscmd,myconnection);
行 84: mycmd.Connection.Open();
行 85: mycmd.ExecuteNonQuery();
行 86: mycmd.Connection.Close();
行 87: myconnection.Close();


源文件: c:\inetpub\wwwroot\liuyanban\huifu.aspx.cs 行: 85

...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinevi 2008-04-15
  • 打赏
  • 举报
回复
一个是varchar一个是int
要么convert(int,varchar字段)好了
string inscmd = "insert into GuestBook values('"+Request["PostID"]+"',getdate(),'"+name+"',' ','"+Txtresponse.Text+"')";
-->
string inscmd = "insert into GuestBook values(convert(int,'"+Request["PostID"]+"'),getdate(),'"+name+"',' ','"+Txtresponse.Text+"')";
  • 打赏
  • 举报
回复

设断点单步调式下,看这个SQL有么错误
string inscmd = "insert into GuestBook values('"+Request["PostID"]+"',getdate(),'"+name+"',' ','"+Txtresponse.Text+"')";
gauzxj 2008-04-13
  • 打赏
  • 举报
回复
单引号和分号都去掉
youaskme 2008-04-13
  • 打赏
  • 举报
回复
解决方法很简单:

把这句改一下:
string inscmd = "insert into GuestBook values('"+Request["PostID"]+"',getdate(),'"+name+"',' ','"+Txtresponse.Text+"')";
增加对Request["PostID"]的处理,修改为:
string inscmd = "insert into GuestBook values('"+Request["PostID"].Replace(";","")+"',getdate(),'"+name+"',' ','"+Txtresponse.Text+"')";

deant1982 2008-04-13
  • 打赏
  • 举报
回复
代码中怎么修改呀 我是新手
wanghui0380 2008-04-13
  • 打赏
  • 举报
回复
还是sql问题,其实看错误提示就明白了
'19;' 可以转成int吗?你多了个;号
sdyqingdao 2008-04-13
  • 打赏
  • 举报
回复
'19;'后面多了个分号
whycom 2008-04-13
  • 打赏
  • 举报
回复
将 varchar 值 '19;' 转换为数据类型为 int 的列时发生语法错误。
================
不是已经告诉你了吗
你的sql语句有错

62,046

社区成员

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

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

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

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