- 软件版本信息:
VS2017
Access专业增强版2016
ps: Access版本查看【文件】——【账户】
- 连接步骤:
- 新建一个数据库,以Access为例,命名为**.accdb或**.mdc
- 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();
}
/// <summary>
/// dataGirdView跟据内容自动适应单元格大小
/// </summary>
/// <param name="dgv"></param>
/// <param name="dt"></param>
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引擎了。
- 将第一步创建的**.mdb/**.accdb复制到bin/debug文件夹内。(如果数据库文件是在别的位置,需要在代码里改一下Application.StartupPath为数据库的路径)
运行效果:
ps:
DataSet:数据集。一般包含多个DataTable,用的时候,dataset[“表名”]得到DataTable
DataTable:数据表。
DataSet可以比作一个内存中的数据库,DataTable是一个内存中的数据表,DataSet里可以存储多个DataTable。
版权声明:本文为Scarlett2025原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。