C# 无法在windows身份验证中插入sql server

C# 无法在windows身份验证中插入sql server,c#,sql,ado.net,C#,Sql,Ado.net,我尝试了windows身份验证模式。当我使用sqlDatabase server运行此代码时,尝试提交时会显示错误: “-”附近的语法不正确 当我运行此程序并在连接数据库时输入数据时,它会显示相同的错误。您需要对带有-的字段名使用方括号(分隔标识符): private DateTime currentDate; private string strInsert; private SqlCommand sqlCmd; private SqlConnection hookUp; protected

我尝试了windows身份验证模式。当我使用sqlDatabase server运行此代码时,尝试提交时会显示错误:

“-”附近的语法不正确


当我运行此程序并在连接数据库时输入数据时,它会显示相同的错误。

您需要对带有
-
的字段名使用方括号(分隔标识符):

private DateTime currentDate;
private string strInsert;
private SqlCommand sqlCmd;
private SqlConnection hookUp;

protected void EnterData(object sender, EventArgs e)
{
    currentDate = DateTime.Now;
    hookUp = new SqlConnection("Server=DESKTOP-BDL7T9A;Database=Vote;" 
                      +  "Integrated Security=True;");        

    strInsert = " INSERT INTO Supporters (LastName,FirstName,";
    strInsert += "E-mail,Donation,DateLastContact)VALUES";
    strInsert += "(@LName,@FName,@Em,@Donate,@NowDate)";

    sqlCmd = new SqlCommand(strInsert, hookUp);
    sqlCmd.Parameters.AddWithValue("@LName",LName.Text);
    sqlCmd.Parameters.AddWithValue("@FName",FName.Text);
    sqlCmd.Parameters.AddWithValue("@Em",Em.Text);
    sqlCmd.Parameters.AddWithValue("@Donate",Donate.Text);
    sqlCmd.Parameters.AddWithValue("@NowDate",currentDate);

    hookUp.Open();
    sqlCmd.ExecuteNonQuery();
    hookUp.Close();

    Lbl1.Text = "Data has been sent";
}
进一步阅读:MSDN

您可以找到常规标识符的以下规则:

  • 不允许使用嵌入空格或特殊字符
  • 在Transact-SQL语句中使用标识符时,不符合这些规则的标识符必须用双引号或括号分隔

    还请注意,您可以使用逐字字符串跨越多行代码的字符串文字:

    strInsert += "[E-mail],Donation,DateLastContact)VALUES";
    

    谢谢你的帮助,先生,你让我的代码运行我几乎放弃了编码,但你解决了我的问题。
      strInsert = @"INSERT INTO Supporters 
                   (LastName,FirstName,[E-mail],Donation,DateLastContact)
                   VALUES (@LName,@FName,@Em,@Donate,@NowDate)";