0

just a beginner in Programing ... I use a class to handle the connectionstring .

public class DataBase { public OleDbConnection con = new OleDbConnection(); 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");
        }
    }

and when i click the button i got "Microsoft JET Database Engine"

2
  • Check OLEDB engine version in your connection string along with machine architecture. Jet OLEDB provider and your application architecture should match. Commented Sep 13, 2014 at 13:33
  • I hope you know that the default for Visual Studio is to copy the db to its own folder. Commented Sep 13, 2014 at 14:03

2 Answers 2

0

Without seeing more context (such as what your connection string and data context look like), I can only take a guess.

One issue appears to be a typo in the field below called "Cotumer_Name". Your text box is named "CostumerName" with an S in there.

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)");

It'd be helpful to include some more code.

Sign up to request clarification or add additional context in comments.

1 Comment

Access uses position, not name for external SQL parameters.
0

I figure out whats wrong

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");
            }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.