簡體   English   中英

無法從Visual C#將數據插入MS Access數據庫

[英]Unable to insert data into MS Access database from Visual C#

只是編程的初學者。我用一個類來處理connectionstring。

公共類數據庫(public OleDbConnection con = new OleDbConnection(); 公共OleDbCommand cmd =新的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數據庫引擎”

在沒有看到更多上下文(例如連接字符串和數據上下文是什么樣的情況)的情況下,我只能猜測一下。

一個問題似乎是下面稱為“ 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)");

包含更多代碼會很有幫助。

我弄清楚怎么了

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM