c# 连接ACCESS数据库

C#连接Access2003 2007数据库手记Access2003保存的数据库文件格式为.mdb,Access 2007数据库保存的数据库文件格式为.accdb。总体来说用C#下用ado连接两者的代码几乎是一样的,唯一的区别就是连接字符串中Provider字段不一样。 例如:mdb:Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\Users\\xiaxia\\Desktop\\temp\\Database1.mdbaccdb:Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\\Users\\xiaxia\\Desktop\\temp\\haha.accdb
 
using System.Data.OleDb;
public partial class Form3 : Form
{
        OleDbConnection objConnextion;
       // DataSet ds;
        int vRec;

        public Form3()
        {
            InitializeComponent();
        }

        private void Form3_Load(object sender, EventArgs e)
        {

        }

        private void linkdb()
        {
            string strConnection = "Provider = Microsoft.Jet.Oledb.4.0;Data Source = yg606g_result.mdb";
            objConnextion = new OleDbConnection(strConnection);
            objConnextion.Open();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            linkdb();
            string sql = "select * from result";
            OleDbDataAdapter myda = new OleDbDataAdapter(sql, objConnextion);
            DataSet myds = new DataSet();
            vRec = myda.Fill(myds, "result");
            dataGridView1.DataSource = myds.Tables ["result"];
        }
}

另外一种更为严谨的:

private void linkdb()
        {
            string ConStr = string.Format(@"Provider=Microsoft.Jet.OLEdb.4.0;Data Source = {0}\yg606g_result.mdb",
                Application.StartupPath);
            OleDbConnection oleCon = new OleDbConnection(ConStr);
            OleDbDataAdapter oleDap = new OleDbDataAdapter("select * from Result", oleCon);
            DataSet ds = new DataSet();
            oleDap.Fill(ds, "result");
            //this.dataGridView1.DataSource = ds.Tables["result"];//this method is good!
            this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
            oleCon.Close();
            oleCon.Dispose();
        }


另外一种可供参考:

using System.Data;
using System.Data.OleDb;
private OleDbConnection con;
/// <summary>
        /// 打开数据库连接
        /// </summary>
        /// <param name="DBpath">数据库路径(包括数据库名)</param>
        private void Open(String DBpath)
        {           
            if(con == null)
                con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBpath);
            if (con.State == ConnectionState.Closed)
                con.Open();
        }

/// <summary>
        /// 创建一个命令对象并返回该对象
        /// </summary>
        /// <param name="sqlStr">数据库语句</param>
        /// <param name="file">数据库所在路径</param>
        /// <returns>OleDbCommand</returns>
        private OleDbCommand CreateCommand(string sqlStr, string file)
        {
            Open(file);
            OleDbCommand cmd = new OleDbCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sqlStr;
            cmd.Connection = con;
            return cmd;
        }
        /// <summary>
        /// 执行
        /// </summary>
        /// <param name="sqlStr">SQL语句</param>
        /// <param name="file">数据库所在路径</param>
        /// <returns>返回数值当执行成功时候返回true,失败则返回false</returns>
        public bool ExecuteNonQury(string sqlStr, string file)
        {
            OleDbCommand cmd = CreateCommand(sqlStr, file);
            int result = cmd.ExecuteNonQuery();
            if (result == -1 | result == 0)
            {
                cmd.Dispose();
                Close();
                return false;
            }
            else
            {
                cmd.Dispose();
                Close();
                return true;
            }
/// <summary>
        /// 执行数据库查询
        /// </summary>
        /// <param name="sqlStr">查询语句</param>
        /// <param name="tableName">填充数据集表格的名称</param>
        /// <param name="file">数据库所在路径</param>
        /// <returns>查询的数据集</returns>
        public DataSet GetDataSet(string sqlStr, string file)
        {
            DataSet ds = new DataSet();
            OleDbCommand cmd = CreateCommand(sqlStr, file);
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmd);
            dataAdapter.Fill(ds);
            cmd.Dispose();
            Close();
            dataAdapter.Dispose();
            return ds;
        }
/// <summary>
        /// 生成一个数据读取器OleDbDataReader并返回该OleDbDataReader
        /// </summary>
        /// <param name="sqlStr">数据库查询语句</param>
        /// <returns>返回一个DataReader对象</returns>
        public OleDbDataReader GetReader(string sqlStr, string file)
        {
            OleDbCommand cmd = CreateCommand(sqlStr, file);
            OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            //CommadnBehavior.CloseConnection是将于DataReader的数据库链接关联起来
            //当关闭DataReader对象时候也自动关闭链接
            return reader;
        }

/// <summary>
        /// 关闭数据库
        /// </summary>
        public void Close()
        {
            if (con != null)
                con.Close();
            con = null;
        }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下步骤来连接 Access 数据库: 1. 引用 COM 组件:在 Visual Studio 中,右键单击“引用”文件夹,选择“添加引用”,在“COM”选项卡中选择“Microsoft Office 16.0 Access Database Engine Object Library”(如果您的 Access 版本不同,则可能会有所不同)。 2. 添加命名空间:在代码文件的顶部添加以下命名空间: ``` using System.Data.OleDb; ``` 3. 设置连接字符串:在代码中设置连接字符串,示例代码如下: ``` string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb"; ``` 其中,“myFolder”是你的 Access 文件所在的文件夹,而“myAccessFile.accdb”是你的 Access 文件的名称。 4. 创建连接对象:使用连接字符串创建 OleDbConnection 对象,示例代码如下: ``` OleDbConnection connection = new OleDbConnection(connectionString); ``` 5. 打开连接:使用 Open() 方法打开连接,示例代码如下: ``` connection.Open(); ``` 6. 执行查询:使用 OleDbCommand 对象来执行查询,示例代码如下: ``` OleDbCommand command = new OleDbCommand("SELECT * FROM myTable", connection); OleDbDataReader reader = command.ExecuteReader(); ``` 其中,“myTable”是你要查询的表的名称。 7. 关闭连接:在使用完连接和数据阅读器之后,使用 Close() 方法关闭连接,示例代码如下: ``` reader.Close(); connection.Close(); ``` 这样,你就可以使用 C# 连接 Access 数据库了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值