2009-09-30 9 views
4

le code mentionné ci-dessous génère l'erreur "SYNTAX ERREUR DANS INSERT INTO"Erreur dans datagridview en utilisant ms acess (C#)

ici, je pris le nom et le champ numéro a le texte

pas comme autonumber (clé primaire)

con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/ppd/db1.mdb;Jet OLEDB:Database Password=techsoft"); 

    da = new OleDbDataAdapter("select * from contacts", con); 

    DataSet ds = new DataSet(); 

    da.Fill(ds, "contacts"); 

    dt = ds.Tables[0]; 

    dataGridView1.DataSource = dt; 
    OleDbConnection con; 

    OleDbDataAdapter da; 

    DataTable dt; 

    OleDbCommand cm; 

    string insertQuery = @"insert into contacts(names,number,no) Values (@names,@number,@no)"; 

    cm = new OleDbCommand(insertQuery, con); 

    cm.Parameters.Add("@names", OleDbType.VarChar, 10, "names"); 

    cm.Parameters.Add("@number", OleDbType.VarChar, 10, "number"); 

    cm.Parameters.Add("@no", OleDbType.VarChar, 10, "no"); 

    da.InsertCommand = cm; 

    private void button26_Click(object sender, EventArgs e) 
      { 
       da.Update(dt); 
      } 

Répondre

0

n'est Autonumber, vous ne pouvez pas donner autonumber en tant que paramètre dans votre requête d'insertion.

utilisation ci-dessous le code:

con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/ppd/db1.mdb;Jet OLEDB:Database Password=techsoft"); 

    da = new OleDbDataAdapter("select * from contacts", con); 

    DataSet ds = new DataSet(); 

    da.Fill(ds, "contacts"); 

    dt = ds.Tables[0]; 

    dataGridView1.DataSource = dt; 
    OleDbConnection con; 

    OleDbDataAdapter da; 

    DataTable dt; 

    OleDbCommand cm; 

    string insertQuery = @"insert into contacts([names],[number]) Values (@names,@number)"; 

    cm = new OleDbCommand(insertQuery, con); 

    cm.Parameters.Add("@names", OleDbType.VarChar, 10, "names"); 

    cm.Parameters.Add("@number", OleDbType.VarChar, 10, "number"); 


    da.InsertCommand = cm; 

Note: Je viens de pas retiré liste des paramètres .

1

Vous ne pouvez pas mettre du texte dans un champ de type numérique. Si "non" est un numéro automatique, ne lui donnez aucune valeur et il s'auto-incrémentera automatiquement. Il suffit de changer la ligne qui dit:

string insertQuery = @"insert into contacts(names,number,no) Values (@names,@number,@no)";  

à

string insertQuery = @"insert into contacts(names,number) Values (@names,@number)";  

et supprimer la ligne qui dit

cm.Parameters.Add("@no", OleDbType.VarChar, 10, "no"); 
Questions connexes