C#操作Access数据库


   1.WindowsForm测试界面:

 

2.直接上代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data.Odbc;
using DAO = Microsoft.Office.Interop.Access.Dao;
using System.Diagnostics;
using System.Threading;
namespace UseDatabase
{
    public partial class Form1 : Form
    {
        //定义数据常量
       static  string StrConnec = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\VS2017\PackHelper\PackHelper\bin\Debug\AutoPackDatabase.accdb";
        OleDbConnection dbconn = new OleDbConnection(StrConnec);
        OleDbDataAdapter oledbadapter = null;
        DataTable DT = null;
        public Form1()
        {
            InitializeComponent();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            //判断一个键值是否存在,在插入以前就必须保证这个键值是唯一值
            DataSet ds = new DataSet();
            string sql = "select*from  UserInfo  where User='"+textBox1.Text+"'";
            dbconn.Open();//建立连接
            oledbadapter = new OleDbDataAdapter(sql, dbconn);
            oledbadapter.Fill(ds);
          if( ds.Tables[0].Rows.Count<=0)
            {
                MessageBox.Show("记录不存在");
            }
            dbconn.Close();
        }
        private void button4_Click(object sender, EventArgs e)
        {
            
        }
        /// <summary>
        /// 查询整表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click_1(object sender, EventArgs e)
        {
            dbconn.Open();//建立连接
            string sql = "select * from UserInfo ";
            oledbadapter = new OleDbDataAdapter(sql, dbconn);
            DT = new DataTable();
            oledbadapter.Fill(DT);
            dataGridView1.DataSource = DT;
            dbconn.Close();
        }
        /// <summary>
        /// 获取列值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button5_Click(object sender, EventArgs e)
        {
            dbconn.Open();//建立连接
             DT = new DataTable();
            string Update = "select*from  UserInfo  where ID = 3";
            //string Update = "select name1,school from  表1   where ID = 3";
            //OleDbCommand command = new OleDbCommand(Update, dbconn);
            oledbadapter = new OleDbDataAdapter(Update,dbconn);
            oledbadapter.Fill(DT);
            dataGridView1.DataSource = DT;
            richTextBox1.Text+= DT.Rows[0]["User"].ToString();
            richTextBox1.Text += DT.Rows[0]["PassWord"].ToString();
            dbconn.Close();
        }
         /// <summary>
        /// 更改数据库
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            dbconn.Open();//建立连接
            string Update = "update UserInfo set name1 ='" + textBox1.Text + "'"+" where name1 = '"+textBox2.Text+"'";
            OleDbCommand command = new OleDbCommand(Update, dbconn);
            command.ExecuteNonQuery();
            dbconn.Close();
        }
        /// <summary>
        /// 插入一条新纪录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            ///Sql语句中,一定不能有保留字,主要是在Access的字段名字或者是值
            ///如果有保留字,可加[]解决,但是最好的方法是不要出现
            string sql = "INSERT INTO UserInfo([UserName],[PassWord],[AuthorityLevel]) values('" + "学生4" + "','" + "21" + "','" + "175"  + "')";
            dbconn.Open();//建立连接
            OleDbCommand command = new OleDbCommand(sql,dbconn);
            command.ExecuteNonQuery();
            dbconn.Close();
        }
        /// <summary>
        /// 删除一条记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
             dbconn.Open();//建立连接
            string Delete = "Delete From UserInfo  Where UserName = 'IW'" ;
            OleDbCommand command = new OleDbCommand(Delete, dbconn);
            command.ExecuteNonQuery();
            dbconn.Close();
        }
        //使用DataReader读取数据很方便快速简单
        private void button7_Click(object sender, EventArgs e)
        {
            dbconn.Open();//建立连接
            //OleDbCommandBuilder
            string sql = "select * from 表1 where name1 = 'SONGSONG'";
            OleDbCommand comd = new OleDbCommand(sql, dbconn);
            OleDbDataReader dr;
           
            dr = comd.ExecuteReader();
            while (dr.Read())
            {
                richTextBox1.Text += dr[0].ToString();
                richTextBox1.Text += dr[1].ToString();
                richTextBox1.Text += dr[2].ToString();
                richTextBox1.Text += dr[3].ToString();
            }
            dbconn.Close();
        }
        /// <summary>
        /// 在datagridview里更改后,点击保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button9_Click(object sender, EventArgs e)
        {
            //获取所有的有改变的row,组成一个datatable,再判断进行的操作是什么,然后再数据库进行增删改查的操作
            DataTable ChangeDT = DT.GetChanges();
            if (ChangeDT == null)
                return;
            foreach(DataRow DR in ChangeDT.Rows)
            {
                //判断当前行是否是新增行
                if(DR.RowState==System.Data.DataRowState.Added)
                {

                    string sql =  "insert into UserInfo ([User],[PassWord],[AuthorityLevel])values('"+  DR["User"].ToString() + "','" + DR["PassWord"].ToString() + "','" + DR["AuthorityLevel"].ToString() + "')";
                    dbconn.Open();
                    OleDbCommand command = new OleDbCommand(sql, dbconn);
                    command.ExecuteNonQuery();
                    dbconn.Close();
                }
                //判断当前行是否是删除行
                else if (DR.RowState == System.Data.DataRowState.Deleted)
                {

                    string sql = "Delete From UserInfo  Where User = '"+DR["User",DataRowVersion.Original].ToString()+"'"+"And PassWord='"+ DR["PassWord", DataRowVersion.Original].ToString()+"'";
                    dbconn.Open();
                    OleDbCommand command = new OleDbCommand(sql, dbconn);
                    command.ExecuteNonQuery();
                    dbconn.Close();

                }
                //判断当前行是否是修正行
                else if(DR.RowState == System.Data.DataRowState.Modified)
                {
                    string sql = "update UserInfo set [User] ='" + DR["User"].ToString()  + "',[PassWord]='"+ DR["PassWord"].ToString() + "',[AuthorityLevel]='" +DR["AuthorityLevel"].ToString()+ "'"+
                        " Where User = '"+DR["User",DataRowVersion.Original].ToString()+"'"+"And PassWord = '"+ DR["PassWord", DataRowVersion.Original].ToString()+"'";

                    dbconn.Open();
                    OleDbCommand command = new OleDbCommand(sql, dbconn);
                    command.ExecuteNonQuery();
                    dbconn.Close();


                }
            }
        }

        private void button10_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string sql = "select*from  UserInfo ";
            dbconn.Open();//建立连接
            oledbadapter = new OleDbDataAdapter(sql, dbconn);
            oledbadapter.Fill(ds);
            string name = string.Empty;
            for( int i=0;i< ds.Tables[0].Rows.Count;i++)
            {
                name += ds.Tables[0].Rows[i]["User"].ToString();


            }
            MessageBox.Show(name);
            dbconn.Close();

        }


        Stopwatch Watchdog = new Stopwatch();
        private void button11_Click(object sender, EventArgs e)
        {
            dbconn.Open();//建立连接
            DataTable dt0 = GetTableSchema();
            Watchdog.Reset();
            Watchdog.Start();
            OleDbCommand command = new OleDbCommand("", dbconn);
            command.CommandType = CommandType.Text;
            for (int i=0;i<=10000;i++)
            {
               // command.CommandText执行Sql语句
                command.CommandText= "insert into UserInfo ([User],[PassWord],[AuthorityLevel])values('" + "Userif"+i.ToString() + "','" + "PassWordif"+ i.ToString() + "','" + "AuthorityLevelif" + i.ToString() + "')";
                command.ExecuteNonQuery();
               
            }
            /*
             *               Access数据库不能用sqlBULK,批量插入,只能一条一条循环插入
             *
             *              //DataRow dr = dt0.NewRow();
                            //dr["User"] = "User"+i.ToString();
                            //dr["PassWord"] = "PassWord" + i.ToString();
                            //dr["AuthorityLevel"] = "AuthorityLevel" + i.ToString();
                            //dt0.Rows.Add(dr);

             *
             * */




            Watchdog.Stop();
            richTextBox1.AppendText(Watchdog.ElapsedMilliseconds.ToString());
            dbconn.Close();
        }
        static DataTable GetTableSchema()
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[] {
        new DataColumn("User",typeof(string)),
        new DataColumn("PassWord",typeof(string)),
        new DataColumn("AuthorityLevel",typeof(string))});
            return dt;
        }
    }
}



免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM