2017-03-17 1 views
1
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"; 
} 

J'ai essayé en mode d'authentification Windows. Quand je lance ce code avec le serveur SqlDatabase il affiche une erreur lorsque je tente de présenter:Impossible d'insérer dans le serveur SQL dans l'authentification Windows

syntaxe incorrecte près « - »

quand je lance ce programme et entrer les données au moment de la connexion de base de données il affiche la même erreur.

Répondre

2

Vous devez utiliser des crochets (identifiant délimité) pour les noms de champs avec -:

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

Pour en savoir plus: MSDN Database Identifiers.

Vous pouvez y trouver des règles pour les identifiants réguliers:

  1. espaces intégrés ou des caractères spéciaux ne sont pas autorisés.

Lorsque les identificateurs sont utilisés dans les instructions Transact-SQL, les identificateurs qui ne respectent pas ces règles doivent être délimitées par des guillemets doubles ou entre parenthèses.

Notez également que vous pouvez utiliser chaîne verbatim pour couvrir chaîne littérale pour plusieurs lignes de code:

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

Merci monsieur pour votre aide que vous avez fait courir mon code que j'avais presque abandonné le codage, mais vous avez résolu mon problème. – Ghalan