栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

WinForm dataGridView连接Access数据库

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WinForm dataGridView连接Access数据库

- 软件版本信息:
VS2017
Access专业增强版2016
ps: Access版本查看【文件】——【账户】
- 连接步骤:

  1. 新建一个数据库,以Access为例,命名为**.accdb或**.mdc
  2. VS新建一个WinForm项目
    窗口如下:

    代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WareHouse_WinForm
{
    public partial class DataGridView_Inquire : Form
    {
        public DataGridView_Inquire()
        {
            InitializeComponent();            
        }

        private void DataGridView_Inquire_Load(object sender, EventArgs e)
        {
            //DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            OleDbCommand comm = new OleDbCommand();
            OleDbDataAdapter da = new OleDbDataAdapter();
            //access数据库连接字符串,自行更改数据库路径和名字
            string ConnectionStr = @"Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" + Application.StartupPath + @"Database1.mdb;";
            OleDbConnection conn = new OleDbConnection(ConnectionStr);
            conn.Open();
            comm.Connection = conn;
            comm.CommandType = CommandType.Text;
            comm.CommandText = "select * from Poirot";//查询student表
            da.SelectCommand = comm;
            da.Fill(dt);
            //da.Fill(ds);
            //textBox1.Text = ds.Tables[0].Rows[1][1].ToString();//文本框中显示第一行第一列的一个值
            //this.dataGridView2.DataSource = ds.Tables[0].DefaultView;//表从起始行显示在dataGridView里
            textBox1.Text = dt.Rows[6][1].ToString();//文本框中显示第一行第一列的一个值
            this.dataGridView2.DataSource = dt.DefaultView;//表从起始行显示在dataGridView里
            this.dataGridView2.ClearSelection();   //不默认选中第一行第一列           
            AutoWidth(dataGridView2,dt);
            conn.Close();
        }

        /// 
        /// dataGirdView跟据内容自动适应单元格大小
        /// 
        /// 
        /// 
        public static void AutoWidth(DataGridView dgv, DataTable dt)
        {
            int width = dgv.Width;
            int avgWidth = width / dt.Columns.Count;//求出每一列的header宽度
            dgv.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
            dgv.RowsDefaultCellStyle.WrapMode = DataGridViewTriState.True;//数据溢出换行,根据内容大小自动换行
            for (int i = 0; i < dgv.Columns.Count; i++)
            {
                dgv.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);
            }
        }
    }
}

代码中Provider引擎可有两种写法:

Provider=Microsoft.ACE.OLEDB.12.0;
Provider=Microsoft.Jet.OLEDB.4.0;

区别:
ACE引擎,既可以访问Office 97-2003,也可以访问Office 2007 。
Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。
所以,如果access数据库后缀名为.accdb(2007)就不能用jet引擎了。

  1. 将第一步创建的**.mdb/**.accdb复制到bin/debug文件夹内。(如果数据库文件是在别的位置,需要在代码里改一下Application.StartupPath为数据库的路径)

    运行效果:

    ps:
    DataSet:数据集。一般包含多个DataTable,用的时候,dataset[“表名”]得到DataTable
    DataTable:数据表。
    DataSet可以比作一个内存中的数据库,DataTable是一个内存中的数据表,DataSet里可以存储多个DataTable。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号