' - '附近的语法不正确

时间:2014-05-16 21:06:05

标签: asp.net

有人可以帮我这个代码吗? 提交信息时我有一些问题, 无法添加到数据库。这是为登录表单创建的我添加所有的信息和东西,但它不工作可以有人看看这个代码可能会发现一个错误。

$

protected void Page_Load(object sender, EventArgs e)
{
    if(IsPostBack)
    {

        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
        conn.Open();
        string checkuser = "select count(*) from UserDataT where Username='" +TextBoxUN.Text + "'";
        SqlCommand com = new SqlCommand(checkuser, conn);
        int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
        if (temp == 1)
        {

            Response.Write("Ky user egziston");

        }


        conn.Close();
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);

        conn.Open();

        string insertQuery = "insert into UserDataT (Username,E-Mail,Password,Shteti) values (@Uname ,@email ,@password ,@shteti)";
        SqlCommand com = new SqlCommand(insertQuery, conn);
        com.Parameters.AddWithValue("@Uname", TextBoxUN.Text);
        com.Parameters.AddWithValue("@email", TextBoxEM.Text);
        com.Parameters.AddWithValue("@password", TextBoxPW.Text);
        com.Parameters.AddWithValue("@shteti", DropDownList1.SelectedItem.ToString());

        com.ExecuteNonQuery();

        Response.Redirect("Manager.aspx");
        Response.Write("Regjistrimi eshte bere me sukses");



        conn.Close();
    }
    catch (Exception ex)
    {
        Response.Write("ERROR:" + ex.ToString());
    }

$

4 个答案:

答案 0 :(得分:1)

E-Mail在SQL中不是有效的identifier。一般来说,最好避免像这样创建列名,但是,如果您坚持使用此列名,请尝试分隔标识符,如下所示:

string insertQuery = "insert into UserDataT (Username,[E-Mail],Password,Shteti) values (@Uname ,@email ,@password ,@shteti)";

但就个人而言,我更喜欢在SQL查询中划分所有表或列名称,这只是一种风格问题,因为它有助于更​​清楚地识别查询的各个部分,如下所示: / p>

string insertQuery = "INSERT INTO [UserDataT] ([Username],[E-Mail],[Password],[Shteti]) VALUES (@Uname ,@email ,@password ,@shteti)";

答案 1 :(得分:0)

尝试更改此行:

string insertQuery = "insert into UserDataT (Username,E-Mail,Password,Shteti) values (@Uname ,@email ,@password ,@shteti)";

到此:

string insertQuery = "insert into UserDataT (Username,[E-Mail],Password,Shteti) values (@Uname ,@email ,@password ,@shteti)";

请注意,我已将E-Mail更改为[E-Mail]。如果您的列或表名称带有空格或短划线,则需要包含方括号。

答案 2 :(得分:0)

在插入声明中

insert into UserDataT (Username,E-Mail,Password,Shteti)

您无法编写电子邮件,因为减号不是有效字符,除非列名称被[]包围。如果真的调用了该列,请将其写为[电子邮件]。否则,请使用正确的列名。

答案 3 :(得分:0)

问题与名为“电子邮件”的列有关。将列(首选)重命名为不带连字符(Email)的内容,或将列名称包含在括号内[电子邮件]

我建议重命名表格列