简体   繁体   中英

Insert database using MS Access in C#

It doesn't have an error, but it has a message box showing Ms Access Database Engine and data not insert to database. Can anyone help me solve the problem??

namespace WindowsFormsApplication1
{
    public partial class SignUp : Form
    {
        public SignUp()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Junz\Documents\Register - Copy.mdb";
            conn.Open();
            String Username = textBox1.Text;
            String Password = textBox2.Text;
            String Email = textBox3.Text;
            String Address = textBox4.Text;

            OleDbCommand cmd = new OleDbCommand("INSERT INTO Register(Username,Password,Email,Address) Values(@Username, @Password,@Email,@Address)");
            cmd.Connection = conn;

            if (conn.State == ConnectionState.Open)
            {
                cmd.Parameters.Add("@Username", OleDbType.VarChar,20).Value = Username;
                cmd.Parameters.Add("@Password", OleDbType.VarChar,20).Value = Password;
                cmd.Parameters.Add("@Email", OleDbType.VarChar,20).Value = Email;
                cmd.Parameters.Add("@Address", OleDbType.VarChar,20).Value = Address;

                try
                {
                    cmd.ExecuteNonQuery();
                     MessageBox.Show("DATA ADDED");
                       conn.Close();
                }
                catch (OleDbException ex)
                {
                    MessageBox.Show(ex.Source);
                    conn.Close();
                }
            }
            else
            {
                MessageBox.Show("Connection Failed");
            }
        }
    }
}

ExecuteNonQuery() will return int value representing number of rows updated into Database .

if the returned value is 0 you can Display a Message saying DATA NOT ADDED

Try This: write your try block as below.

   try
   {
        if(cmd.ExecuteNonQuery()>0)
         MessageBox.Show("DATA ADDED");
        else
         MessageBox.Show("DATA NOT ADDED");

        conn.Close();
    }

how about this hope it helps

private void button1_Click(object sender, EventArgs e)
    {
        OleDbConnection conn = new OleDbConnection();
        conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Junz\Documents\Register - Copy.mdb";
        conn.Open();
        String Username = textBox1.Text;
        String Password = textBox2.Text;
        String Email = textBox3.Text;
        String Address = textBox4.Text;

        conn.Open();
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "INSERT INTO Register(Username,Password,Email,Address) Values(@Username, @Password,@Email,@Address)";


        if (conn.State == ConnectionState.Open)
        {
            cmd.Parameters.Add("@Username", OleDbType.VarChar,20).Value = Username;
            cmd.Parameters.Add("@Password", OleDbType.VarChar,20).Value = Password;
            cmd.Parameters.Add("@Email", OleDbType.VarChar,20).Value = Email;
            cmd.Parameters.Add("@Address", OleDbType.VarChar,20).Value = Address;

            try
            {
                cmd.ExecuteNonQuery();
                 MessageBox.Show("DATA ADDED");
                   conn.Close();
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Source);
                conn.Close();
            }
        }
        else
        {
            MessageBox.Show("Connection Failed");
        }
    }

Add this to your catch

catch (OleDbException ex){
    MessageBox.Show(ex.Message);
    conn.Close();
}

And try to insert again, maybe u can see the exact error now.

Good luck.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM