初学者求助,谢谢。可能是SQL语句错误。

rabuhiromi 2013-01-21 05:30:02
VS210 参照某书的代码做一个网站
按照它的方法建了个公共类BaseClass处理数据

这是其中用到的一个方法
//读写数据表--DataTable
public DataTable ReadTable(String strSql)
{
DataTable dt=new DataTable();//创建一个数据表dt
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(dt); //将数据适配器中的数据填充到数据集dt中
Conn.Close();//关闭连接
return dt;
}


然后在展示信息的页面时,运行后报错指向上面的方法的Cmd.Fill(dt)处
提示“用户代码未处理,SqlException 关键字 'user' 附近有语法错误。”

传参过来的前一页的传参代码 是从Gridview的一项中的超链接过来的

<asp:HyperLinkField DataNavigateUrlFields="userid" DataNavigateUrlFormatString="profile.aspx?id={0}"
DataTextField="username" DataTextFormatString="·{0}" HeaderText="username">


这是问题页面


<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage2.master" AutoEventWireup="true" CodeFile="profile.aspx.cs" Inherits="profile" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<asp:DataList ID="DataList1" runat="server" RepeatColumns="1" Font-Bold="False"
Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" HorizontalAlign="Center">
<FooterStyle BackColor="Silver" Font-Bold="False" Font-Italic="False"
Font-Names="楷体" Font-Overline="False" Font-Size="Larger" Font-Strikeout="False"
Font-Underline="False" ForeColor="Red" HorizontalAlign="Justify"
VerticalAlign="Bottom" />
<HeaderStyle BackColor="Lime" Font-Bold="False" Font-Italic="False"
Font-Names="华文楷体" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" ForeColor="Blue" HorizontalAlign="Center"
VerticalAlign="Middle" />
<ItemTemplate>
<table style="width: 100%">
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "userid")%> </td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "username")%>  </td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "userinfo")%></td>
</tr>
</table>

</table>
<table style="width: 100%">
<tr>
<td>
<a href='mycomments.aspx?id=<%# DataBinder.Eval(Container.DataItem, "articleid")%>'>
<%# DataBinder.Eval(Container.DataItem, "userid")%><a/>
</td>
</tr>
</table>

</ItemTemplate>
</asp:DataList>

</asp:Content>



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using GROUP.Manage;
using System.Data;

public partial class profile : System.Web.UI.Page
{

BaseClass BaseClass1 = new BaseClass();
protected void Page_Load(object sender, EventArgs e)
{
string strsql = "select * from user where userid=" + Request.Params["id"].ToString();
DataTable dt = BaseClass1.ReadTable(strsql);
DataList1.DataSource = dt;
DataList1.DataBind();

}

}


做相似的另一个功能时,几乎用了同样的代码可以运行,就这里边的这句SQL语句因为查询的表不同而有不同
直接用request.querystring["id"]也不行,求解,谢谢

另外数据库的表 user 和 comment 以及故障图


报错图

...全文
225 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabuhiromi 2013-01-21
  • 打赏
  • 举报
回复
引用 7 楼 hjywyj 的回复:
引用 5 楼 rabuhiromi 的回复:原来是user的问题。。感谢各位解答 SQL一点不懂。。 引用 4 楼 gxingmin 的回复:某书害人不浅啊, ReadTable函数里的Open和Close两句建议去掉,即 C# code?123456789101112//读写数据表--DataTable public DataTable ……
好的,感谢回复
  • 打赏
  • 举报
回复
引用 5 楼 rabuhiromi 的回复:
原来是user的问题。。感谢各位解答 SQL一点不懂。。 引用 4 楼 gxingmin 的回复:某书害人不浅啊, ReadTable函数里的Open和Close两句建议去掉,即 C# code?123456789101112//读写数据表--DataTable public DataTable ReadTable(String strSq……
SqlDataAdapter 不需要手动打开关闭connection,它会自动打开和关闭connection
陌城灬流年閣 2013-01-21
  • 打赏
  • 举报
回复
断点,一步一步看吧
rabuhiromi 2013-01-21
  • 打赏
  • 举报
回复
原来是user的问题。。感谢各位解答 SQL一点不懂。。
引用 4 楼 gxingmin 的回复:
某书害人不浅啊, ReadTable函数里的Open和Close两句建议去掉,即 C# code?123456789101112//读写数据表--DataTable public DataTable ReadTable(String strSql) { DataTable dt=new DataTable();//创建……
这是为什么求讲解
gxingmin 2013-01-21
  • 打赏
  • 举报
回复
某书害人不浅啊, ReadTable函数里的Open和Close两句建议去掉,即
//读写数据表--DataTable
		public DataTable ReadTable(String strSql)
		{
			DataTable dt=new DataTable();//创建一个数据表dt
            SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
            //Conn.Open();//打开连接 //去掉这句
            SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
            Cmd.Fill(dt);								//将数据适配器中的数据填充到数据集dt中
			//Conn.Close();//关闭连接 //去掉这句

			return dt;
		}
JOHN的梦 2013-01-21
  • 打赏
  • 举报
回复
"select * from user where userid=" + Request.Params["id"].ToString(); 确定字段名称正确吗?
gxingmin 2013-01-21
  • 打赏
  • 举报
回复
user在sql中是关键字 把string strsql = "select * from user where userid=" + Request.Params["id"].ToString(); 改成 string strsql = "select * from [user] where userid=" + Request.Params["id"].ToString();
  • 打赏
  • 举报
回复
string strsql = "select * from [user] where userid=" + Request.QueryString["id"].ToString();//断点看一下querystring["id"]是不是有值

62,243

社区成员

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

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

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

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