【问题标题】:SqlException was unhandled by user code error during executionSqlException 在执行期间被用户代码错误未处理
【发布时间】:2014-07-12 12:59:26
【问题描述】:

我正在制作页面以显示表格中的信息(如任何电子邮件网站的收件箱页面)。但我得到以下错误:

关键字“to”附近的语法不正确。

下面是我的 C# 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class Inbox : System.Web.UI.Page
{
SqlConnection con = new SqlConnection();
SqlCommand cmmd = new SqlCommand();
protected void Page_Load(object sender, EventArgs e)
{
    con.ConnectionString=@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\Users\user\documents\visual studio 2012\WebSites\Email\App_Data\Database.mdf;Integrated Security=True";
    con.Open();
    label1.Text = Session["uid"].ToString();

    cmmd.CommandText = "select frm from Inbox where to='" + Session["uid2"].ToString() + "'";
    cmmd.Connection= con;
    SqlDataAdapter daa = new SqlDataAdapter(cmmd);
    DataTable dtt = new DataTable();
    daa.Fill(dtt);

    if(dtt.Rows.Count > 0)
    {
        label2.Text = dtt.Rows[0][3].ToString();
    }

}

}

如何解决这个错误?

【问题讨论】:

  • 我认为它是指cmmd.CommandText = "select frm... 行,您是否尝试在字符串前面添加@
  • 另外,请务必阅读this 和相关材料。

标签: c# asp.net sql sql-server-2012-express


【解决方案1】:

使用“[to]”而不是“to”。字段名使用保留术语时会出现问题。

应该是这样的:

cmmd.CommandText = "select [frm] from [Inbox] where [to]='" + Session["uid2"].ToString() + "'";

编辑:

是的,为了更好的安全性和更不容易出错的代码,您应该使用 SqlParameter,类似这样:

cmmd.CommandText = "select [frm] from [Inbox] where [to]=@SID"
cmmd.Parameters.Add("@SID", SqlDbType.Varchar);
cmmd.Parameters["@SID"].Value = Session["uid"].ToString();;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多