Je crée une table nommée table avec des membres (prénom, nom de famille, adresse). Le programme jette l'erreur "Syntaxe incorrecte à proximité du mot clé" Table "". L'application consiste à insérer les données dans la table. Le code est destiné au nouveau gestionnaire d'exception Button.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace Week4 { public partial class Form1 : Form { SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\cvyc8\Documents\Testing.mdf;Integrated Security=True;Connect Timeout=30"); public Form1() { InitializeComponent(); } private void txtSearch_TextChanged(object sender, EventArgs e) { } private void btnNew_Click(object sender, EventArgs e) { con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "insert into [Member] values ('" + txtFirstName.Text + "', '" + txtLastName.Text + "', '" + txtAddress.Text + "')"; cmd.ExecuteNonQuery(); con.Close(); MessageBox.Show("Member added successfully"); } private void btnEdit_Click(object sender, EventArgs e) { } private void btnCancel_Click(object sender, EventArgs e) { } private void btnSave_Click(object sender, EventArgs e) { } } }
3 Réponses :
Le code ci-dessous pourrait fonctionner, mais je vous recommande vivement de ne pas utiliser le mot-clé réservé pour un nom de table. (Réponse associée: https://stackoverflow.com/a/695626/361100 ) p> Table code> est un mot clé réservé dans SQL, y compris MSSQL.
J'ai créé une nouvelle table appelée membre. Toujours d'erreur: Mise à jour CMD.COMMANDText = "Insérez-la dans les valeurs [Membre] ('" + txtfirstname.text + "' '",' "+ txtlastname.text +" "," "+ txtaddress.text +" ') ";
Dis-il "syntaxe incorrecte près du mot clé" Table '"? Si oui, vous n'exécutez pas le nouveau code.
L'erreur est générale car elle n'est pas capable de comprendre le "membre]" dans votre code. Cela semble suspect dans [Membre]. Votre nom de table est espère que cela aide. P> p>
Il y a eu une certaine confusion son @rohan_rao parce que l'OP a modifié le code de "Table" à "membre" après son indiquer que "Table" est un mot réservé. (Par lequel votre solution échouerait aussi).
@Tomc l'a eu. Merci d'avoir souligné. J'ai changé le nom de la table en membre.
Vous devez utiliser des paramètres pour éviter l'injection SQL
string sql = "insert into Member(col1, col2, col3) values(@val1, @val2, @val3)"; using (SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\cvyc8\Documents\Testing.mdf;Integrated Security=True;Connect Timeout=30")) { connection.Open(); using (SqlCommand cmd= new SqlCommand(sql, connection)) { md.Parameters.Add("@val1", SqlDbType.Varchar, 50).value = txtFirstName.Text; cmd.Parameters.Add("@val2", SqlDbType.Varchar, 50).value = txtLastName.Text; cmd.Parameters.Add("@val3", SqlDbType.Varchar, 50).value = txtAddress.Text; cmd.ExecuteNonQuery(); } MessageBox.Show("Member added successfully"); }
Appelez mes informations de connexion deux fois? Je l'appelle dans la classe de 1 de 1.
@CVYCVY NO BESOIN DE L'APPELER LE TROIS DEUXIMME .. VÉRIFIEZ LA RÉPONSE MISE À JOUR
Exceptions de lancement "Exécutenonquery nécessite une connexion ouverte et disponible. L'état actuel de la connexion est fermé."
D'accord, vérifiez la réponse mise à jour .. Il suffit d'ouvrir la connexion comme connexion.open (); code>
Désolé la dernière question et je recherche avant que je demande, mais maintenant je reçois un nom de colonne invalide.
col1 code> doit être le même nom que votre nom de colonne de table.
Merci d'avoir eu un domaine d'identification que j'ai créé une nouvelle base de données sans elle et cela a fonctionné.
[Table] CODE> et SQL Injection et vous avez Extra
) code>
Je vois que vous avez mis à jour votre nom de table de 'Table' à '[membre]'. Si vous obtenez toujours exactement le même message d'erreur qui indique le mot-clé «Table», vous n'exécutez pas votre nouveau code.
@TOMC, nouvelle erreur, nom de colonne ou numéro de valeurs fournies ne correspond pas à la définition de la table. '
Essayez de définir un point d'arrêt et de passer à travers. Le message est explicite et dit «Table», vous n'exécutez donc pas le commandement de commandement que vous pensez être.
Alerte d'injection SQL - Vous devriez pas b> Concaténate Ensemble vos instructions SQL - Utilisez Queries paramétrisées B> pour éviter l'injection SQL - Consultez Little Bobby Tables