2014-09-13 153 views
0

只是一個初學者在編程... 我使用一個類來處理連接字符串。無法將數據從Visual C插入MS Access數據庫#

public class DataBase public OleDbConnection con = new OleDbConnection();公共類DataBase public OleDbCommand cmd = new OleDbCommand();

public void getConnection() 
    { 
     con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Project\Database\DataBase.mdb"; 

    } 

private void btnPrint_Click(object sender, EventArgs e) 
    { 
     DataBase db = new DataBase(); 
     db.getConnection(); 


     string Name = txtCostumerName.Text; 
     string DayorNight = cboSwimming.Text; 
     string Adult1 = txtAdultCount.Text; 
     string Kid = txtKidsCount.Text; 
     string Cottage1 = cboCottageType.Text; 
     string Room = cboRoomType.Text; 
     string Total1 = lblCottageTotal.Text; 
     string Cash1 = txtCashRecieve.Text; 
     string Change1 = txtChange.Text; 
     db.con.Open(); 
     OleDbCommand command = new OleDbCommand ("INSERT INTO TicketAndCottage (Cotumer_Name , Swimming, Adult, Kids, Cottage, Room , Total, Cash, Change) Values(@Name , @DayorNight , @Adult1 ,@Kid , @Cottage1 , @Room, @Total1 , @Cash1 , @Change1)"); 
     command.Connection = db.con; 
     command.CommandType = CommandType.Text; 


     if (db.con.State == ConnectionState.Open) 
     { 
      command.Parameters.Add("@Cotumer_Name", OleDbType.VarChar, 20).Value = Name; 
      command.Parameters.Add("@Swimming", OleDbType.VarChar, 20).Value = DayorNight; 
      command.Parameters.Add("@Adult", OleDbType.VarChar, 20).Value = Adult1; 
      command.Parameters.Add("@Kids", OleDbType.VarChar, 20).Value = Kid; 
      command.Parameters.Add("@Cottage", OleDbType.VarChar, 20).Value = Cottage1; 
      command.Parameters.Add("@Room", OleDbType.VarChar, 20).Value = Room; 
      command.Parameters.Add("@Total", OleDbType.VarChar, 20).Value = Total1; 
      command.Parameters.Add("@Cash", OleDbType.VarChar, 20).Value = Cash1; 
      command.Parameters.Add("@Change", OleDbType.VarChar, 20).Value = Change1; 

      try 
      { 
       command.ExecuteNonQuery(); 
       MessageBox.Show("Data Added"); 
       db.con.Close(); 
      } 
      catch (OleDbException ex) 
      { 
       MessageBox.Show(ex.Source); 
       //db.con.Close(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Connection Failed"); 
     } 
    } 

,當我按一下按鈕我得到了「Microsoft Jet數據庫引擎」

+0

檢查OLEDB引擎版本在連接字符串中使用機器架構一起。 Jet OLEDB提供程序和您的應用程序體系結構應匹配。 – 2014-09-13 13:33:10

+0

我希望您知道Visual Studio的默認設置是將數據庫複製到其自己的文件夾。 – Fionnuala 2014-09-13 14:03:18

回答

0

沒有看到更多的內容(比如你的連接字符串和數據上下文的樣子),我只能採取一種猜測。

有一個問題在下面的字段中出現了一個名爲「Cotumer_Name」的拼寫錯誤。你的文本框被命名爲「CostumerName」,其中有一個S。

OleDbCommand command = new OleDbCommand 
    ("INSERT INTO TicketAndCottage (Cotumer_Name , Swimming, Adult, Kids, Cottage, Room , Total, Cash, Change) 
           Values(@Name , @DayorNight , @Adult1 ,@Kid , @Cottage1 , @Room, @Total1 , @Cash1 , @Change1)"); 

這將是有益的,包括更多的代碼。

+3

訪問使用位置,而不是外部SQL參數的名稱。 – Fionnuala 2014-09-13 13:41:48

0

我弄清楚什麼是錯

private void btnPrint_Click(object sender, EventArgs e) 
     { 
      DataBase db = new DataBase(); 
      db.getConnection(); 
      db.con.Open(); 

      string Name = txtCostumerName.Text; 
      string DayorNight = cboSwimming.Text; 
      string Adult1 = txtAdultCount.Text; 
      string Kid = txtKidsCount.Text; 
      string Cottage1 = cboCottageType.Text; 
      string Room = cboRoomType.Text; 
      double Total1 = Convert.ToDouble(lblCottageTotal.Text); 
      double Cash1 = Convert.ToDouble(txtCashRecieve.Text); 
      double Change1 = Convert.ToDouble(txtChange.Text); 
      OleDbCommand command = new OleDbCommand("INSERT INTO TicketAndCottage (Costumer_Name , Swimming, Adult, Kids, Cottage, Room , Total, Cash, Change) Values(@Name , @DayorNight , @Adult1 ,@Kid , @Cottage1 , @Room, @Total1 , @Cash1 , @Change1)", db.con); 

      if (db.con.State == ConnectionState.Open) 
      { 
       command.Parameters.Add("@Costumer_Name", OleDbType.VarChar, 50).Value = Name; 
       command.Parameters.Add("@Swimming", OleDbType.VarChar, 50).Value = DayorNight; 
       command.Parameters.Add("@Adult", OleDbType.VarChar, 50).Value = Adult1; 
       command.Parameters.Add("@Kids", OleDbType.VarChar, 50).Value = Kid; 
       command.Parameters.Add("@Cottage", OleDbType.VarChar, 50).Value = Cottage1; 
       command.Parameters.Add("@Room", OleDbType.VarChar, 50).Value = Room; 
       command.Parameters.Add("@Total", OleDbType.Double, 50).Value = Total1; 
       command.Parameters.Add("@Cash", OleDbType.Double, 50).Value = Cash1; 
       command.Parameters.Add("@Change", OleDbType.Double, 50).Value = Change1; 

       try 
       { 
        command.ExecuteNonQuery(); 
        db.con.Close(); 
       } 
       catch (OleDbException ex) 
       { 
        MessageBox.Show(ex.Source); 
        // db.con.Close(); 
       } 
      } 
      else 
      { 
       MessageBox.Show("Connection Failed"); 
      } 
}