这是我用CreateUserWizard 控件写的后台程序,当程序执行到  comm.ExecuteNonQuery();这个语句时,报出了这样的错误:“'-' 附近有语法错误。” 。我想了很多都想不出来,请问大家到底是哪错了?谢谢大家为小弟指点,谢谢~!using System;   
using System.Collections.Generic;   
using System.ComponentModel;   
using System.Data;   
using System.Drawing;      
using System.Text;   
using System.Data.OleDb;   
using System.Data.SqlClient;   
using System.Runtime.InteropServices;   
using System.Configuration;   
using System.Web.UI.WebControls;   
using System.Web.Services.Description;
using System.Data.SqlClient;public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {       
    }    protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
    {        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "server=.; database=zhouzhigang; integrated security=true";
        SqlCommand comm = new SqlCommand();
        comm.Connection = conn;
        comm.CommandText = "select count(*) from zzg2  where UserName=@UserName";
        string UserName = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName")).Text;
        comm.Parameters.AddWithValue("@UserName",UserName);
        conn.Open();
        int i = (int)comm.ExecuteScalar();
        if (i == 0)
        {
            comm.Connection = conn;            comm.CommandText = "insert into zzg2 (UserName,UserPassword,ConfirmPassword,E-mail,Question,Answer) values ('@UserNamee','@UserPassword','@ConfirmPassword','@Email','@Question',)";
            string UserNamee = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName")).Text;
            comm.Parameters.AddWithValue("@UserNamee",UserNamee);
            string UserPassword = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Password")).Text;
            comm.Parameters.AddWithValue("@UserPassword",UserPassword);
            string ConfirmPassword = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ConfirmPassword")).Text;
            comm.Parameters.AddWithValue("@ConfirmPassword",ConfirmPassword);
            string EMail = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Email")).Text;
            comm.Parameters.AddWithValue("@Email",EMail);
            string Question = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Question")).Text;
            comm.Parameters.AddWithValue("@Question",Question);
            string Answer = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Answer")).Text;
            comm.Parameters.AddWithValue("@Answer",Answer);            comm.ExecuteNonQuery();
                    }        else 
        {
        
        
        
        }
   
        
        
        
            }
}

解决方案 »

  1.   

    comm.CommandText = "insert into zzg2 (UserName,UserPassword,ConfirmPassword,E-mail,Question,Answer) values (@UserNamee,@UserPassword,@ConfirmPassword,@Email,@Question)";
    不用单引号的。而且还少了个Answer参数
      

  2.   

    把你的insert语句调试的时候复制到数据库的查询分析器中执行一下不就知道错误了 啊
      

  3.   

    comm.CommandText = "insert into zzg2 (UserName,UserPassword,ConfirmPassword,E-mail,Question,Answer) values (@UserNamee,@UserPassword,@ConfirmPassword,@Email,@Question)";
    改成:
    comm.CommandText = "insert into zzg2 (UserName,UserPassword,ConfirmPassword,[E-mail],Question,Answer) values (@UserNamee,@UserPassword,@ConfirmPassword,@Email,@Question,@Answer)";
    其中E-mail是关键字,最好用[]括起来。