2012-10-04 140 views
0

当我试图在MS Access DB中插入一些数据时,数据未被插入。是我的代码中缺少的东西?执行插入查询后没有数据插入到MDB中

这是代码

public void Toevoegen(
     int nummer, string voornaam, string achternaam, 
     string gsm, string nationaliteit, string adres, 
     DateTime geboorteDatum, string geboortePlaats, DateTime inschrijvingsDatum, 
     string sporten, int postCode, string gemeente, string klasse, 
     Boolean competitie, string ziektes, string email) 
    { 
     try 
     { 
      string query = @"INSERT INTO Lid " 
       + "VALUES (" 
       + "@Lid_ID, " 
       + "@Lid_VoorNaam, " 
       + "@Lid_AchterNaam, " 
       + "@Lid_Email, " 
       + "@Lid_GeboorteDatum, " 
       + "@Lid_InschrijvingsDatum, " 
       + "@Lid_Nationaliteit, " 
       + "@Lid_GeboortePlaats, " 
       + "@Lid_Adres, " 
       + "@Lid_PostCode, " 
       + "@Lid_Gemeente, " 
       + "@Lid_GSM, " 
       + "@Lid_BeoefendeSporten, " 
       + "@Lid_Competitie, " 
       + "@Lid_KickKlasse, " 
       + "@Lid_Ziektes)"; 

      OleDbCommand command = new OleDbCommand(query); 
      command.Parameters.Add("@Lid_ID", OleDbType.Numeric).Value = nummer; 
      command.Parameters.Add("@Lid_VoorNaam", OleDbType.Char).Value = voornaam; 
      command.Parameters.Add("@Lid_Achternaam", OleDbType.Char).Value = achternaam; 
      command.Parameters.Add("@Lid_Email", OleDbType.Char).Value = email; 
      command.Parameters.Add("@Lid_GeboorteDatum", OleDbType.Date).Value = geboorteDatum; 
      command.Parameters.Add("@Lid_InschrijvingsDatum", OleDbType.Date).Value = inschrijvingsDatum; 
      command.Parameters.Add("@Lid_Nationaliteit", OleDbType.Char).Value = nationaliteit; 
      command.Parameters.Add("@Lid_GeboortePlaats", OleDbType.Char).Value = geboortePlaats; 
      command.Parameters.Add("@Lid_Adres", OleDbType.Char).Value = adres; 
      command.Parameters.Add("@Lid_PostCode", OleDbType.Numeric).Value = postCode; 
      command.Parameters.Add("@Lid_Gemeente", OleDbType.Char).Value = gemeente; 
      command.Parameters.Add("@Lid_GSM", OleDbType.Char).Value = gsm; 
      command.Parameters.Add("@Lid_BeoefendeSporten", OleDbType.Char).Value = sporten; 
      command.Parameters.Add("@Lid_Competitie", OleDbType.Boolean).Value = competitie; 
      command.Parameters.Add("@Lid_KickKlasse", OleDbType.Char).Value = klasse; 
      command.Parameters.Add("@Lid_Ziektes", OleDbType.Char).Value = ziektes; 
      conn.executeInsertQuery(command); 
     } 
     catch (Exception error) 
     { 
      System.Windows.Forms.MessageBox.Show(error.Message); 
     } 
    } 

-

public bool executeInsertQuery(OleDbCommand _command) 
    { 
     OleDbCommand myCommand = new OleDbCommand(); 
     try 
     { 
      myCommand.Connection = openConnection(); 
      //myCommand.CommandText = _query; 
      //myCommand.Parameters.AddRange(dbParameter); 
      myAdapter.InsertCommand = _command; 
      myCommand.ExecuteNonQuery(); 
     } 
     catch (OleDbException e) 
     { 
      Console.Write("Error - Connection.executeInsertQuery - Query: " 
       + _command.CommandText + " \nException: \n" + e.StackTrace.ToString()); 
      return false; 
     } 
     finally 
     { 
     } 
     return true; 
    } 

预先感谢您。

回答

1

问题将在这里:

myAdapter.InsertCommand = _command; 
myCommand.ExecuteNonQuery(); 

分配命令myAdapter但随后执行myCommand里面是空的。

+0

我不熟悉OleDb,但将_command分配给myCommand,然后执行查询将工作? – SamekaTV

+0

为什么不直接执行原始**命令**? –

+0

这正是我所做的,但数据未插入:s – SamekaTV