asp.net第 1 行: '=' 附近有语法错误

bcl258586301 2009-11-27 03:37:17
public DataRow dr;
public static string newsid;
protected void Page_Load(object sender, EventArgs e)
{
newsid = Request.Params["nid"];
SqlConnection con = DB.con();
SqlDataAdapter dad4 = new SqlDataAdapter("select * from news where nid="+newsid,con);
DataSet dst = new DataSet();
dad4.Fill(dst, "aaa");
dr = dst.Tables["aaa"].Rows[0];
}

常详细信息: System.Data.SqlClient.SqlException: 第 1 行: '=' 附近有语法错误。

源错误:

行 22: SqlDataAdapter dad4 = new SqlDataAdapter("select * from news where nid="+newsid,con);
行 23: DataSet dst = new DataSet();
行 24: dad4.Fill(dst, "aaa");
行 25: dr = dst.Tables["aaa"].Rows[0];
行 26:



问题补充:调试了一下,竟然newsid的值为null,请问出现为空值,一般在什么情况下?
最好给个详细解决方案..
...全文
186 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharda 2009-11-28
  • 打赏
  • 举报
回复
不知道newsid 是什么类型,
最好先查看下,另外看一下
newsid = Request.Params["nid"]; 中的newsid是否得到值。要是一开始就得到值,那后面肯定是错的。
zhaoxinjunNo1 2009-11-28
  • 打赏
  • 举报
回复
public DataRow dr;
public static string newsid;
protected void Page_Load(object sender, EventArgs e)
{
newsid = Request.Params["nid"];
SqlConnection con = DB.con();
SqlDataAdapter dad4 = new SqlDataAdapter("select * from news where nid="+newsid,con);
DataSet dst = new DataSet();
dad4.Fill(dst, "aaa");
dr = dst.Tables["aaa"].Rows[0];
}
可能的错误原因。
1、得到newsid的值是string类型的。而数据库里nid是int类型的。需要先把newsid转化成int类型的。
int newsId=Convert.ToInt32(newsid);
"select * from news where nid="+newsId
2、数据库中nid是String类型的。newsid需需要加单引号。
"select * from news where nid='"+newsid+"'"
kurorolove 2009-11-28
  • 打赏
  • 举报
回复
建议把Request.Params["nid"]强制转换下,如果数据库里为int型,那么
Convert.ToInt16(Request.Params["nid"])
bcl258586301 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyi8808 的回复:]
C# codepublic DataRow dr;publicstaticstring newsid;protectedvoid Page_Load(object sender, EventArgs e)
{
newsid= Request.Params["nid"];if (newsid==null|| newsid=="") newsid="0";// <-----?-
[/Quote]
我有点不理解,
<Columns>
<asp:HyperLinkColumn HeaderText="标题" DataNavigateUrlField="nid" DataNavigateUrlFormatString="detail.aspx?nid={0}"
DataTextField="biaoti" Target="_new">
</asp:HyperLinkColumn>
<asp:BoundColumn HeaderText="摘自" ItemStyle-Width="20%" DataField="zhaizi"></asp:BoundColumn>
<asp:BoundColumn HeaderText="点击此数" ItemStyle-Width="20%" DataField="counter"></asp:BoundColumn>
<asp:BoundColumn HeaderText="发表日期" ItemStyle-Width="20%" DataField="shijian"></asp:BoundColumn>
</Columns>
传递过去的不因为为空啊,希望高手指点 .....
bcl258586301 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zuoming120 的回复:]
newsid是从哪里来的,这个错误说在这个页面newsid为空,你检查给newsid赋值的代码
[/Quote]
Columns>
<asp:HyperLinkColumn HeaderText="标题" DataNavigateUrlField="nid" DataNavigateUrlFormatString="detail.aspx? nid={0}"
DataTextField="biaoti" Target="_new">
</asp:HyperLinkColumn>
<asp:BoundColumn HeaderText="摘自" ItemStyle-Width="20%" DataField="zhaizi"></asp:BoundColumn>
<asp:BoundColumn HeaderText="点击此数" ItemStyle-Width="20%" DataField="counter"></asp:BoundColumn>
<asp:BoundColumn HeaderText="发表日期" ItemStyle-Width="20%" DataField="shijian"></asp:BoundColumn>
</Columns>
上面的这个地方,但不知道传递过程nid怎么为空了
bcl258586301 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyi8808 的回复:]
C# codepublic DataRow dr;publicstaticstring newsid;protectedvoid Page_Load(object sender, EventArgs e)
{
newsid= Request.Params["nid"];if (newsid==null|| newsid=="") newsid="0";// <-----?-
[/Quote]
newsid定义为类型为String型,在数据访问时候,是不是应该转化为int型?,数据库中的id是int型,
qishichang 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tiandiyouwo1 的回复:]
可能你前台没发送好
如果是好的化,你用request.querystring("nid")试试
Request.Params好像只是接收form厘米的参数(记得不太清了)
request.querystring("nid")是页面之间常用的数据交流方法
[/Quote]
Request.QueryString你能接受Get方式传过来的
Request.Params可以接受Get和Post方式传过来的参数
gablfq 2009-11-27
  • 打赏
  • 举报
回复
就是一个关于系统容错的问题,传过来的参数完全可以为NULL,要看你怎么去处理了、、、
WarRaner 2009-11-27
  • 打赏
  • 举报
回复
或者是newsid没赋值
或者是SQL语句中的newsid的类型有问题
zuoming120 2009-11-27
  • 打赏
  • 举报
回复
newsid是从哪里来的,这个错误说在这个页面newsid为空,你检查给newsid赋值的代码
polarissky 2009-11-27
  • 打赏
  • 举报
回复
newsid如果是string类型的,那么在SQL语句中肯定是要用单引号''包括的。如果是整型的话可以不用。
sql语句不太正确:
SqlDataAdapter dad4 = new SqlDataAdapter("select * from news where nid= '" + newsid + "' " ,con)
polarissky 2009-11-27
  • 打赏
  • 举报
回复


SqlDataAdapter dad4 = new SqlDataAdapter("select * from news where nid= '" + newsid + "' " ,con)
tiandiyouwo1 2009-11-27
  • 打赏
  • 举报
回复
可能你前台没发送好
如果是好的化,你用request.querystring("nid")试试
Request.Params好像只是接收form厘米的参数(记得不太清了)
request.querystring("nid")是页面之间常用的数据交流方法
wuyi8808 2009-11-27
  • 打赏
  • 举报
回复
    public DataRow dr; 
public static string newsid;
protected void Page_Load(object sender, EventArgs e)
{
newsid = Request.Params["nid"];
if (newsid == null || newsid == "") newsid = "0"; // <----------
SqlConnection con = DB.con();
SqlDataAdapter dad4 = new SqlDataAdapter("select * from news where nid="+newsid,con);
DataSet dst = new DataSet();
dad4.Fill(dst, "aaa");
dr = dst.Tables["aaa"].Rows[0];
}
zning8191 2009-11-27
  • 打赏
  • 举报
回复
int i= dst.Tables["aaa"].count;
if(i>0){.....}
mohugomohu 2009-11-27
  • 打赏
  • 举报
回复
Request.Params["nid"]; 没有值
月光下的土豆 2009-11-27
  • 打赏
  • 举报
回复
断点查看一下newsid有值吗?

62,041

社区成员

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

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

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

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