假如我们要写一个实验室设备管理的一个简单程序,用access数据库可以说是最简单便捷的选择了, Access 是Office里面的一个组件是office自带的数据库。
比如说要做成这样的形式,有数据的查询,编辑,添加,删除,生成报表等功能。 先用winform创建一个界面,设计好表格的列属性,其中小组和使用状态是用的下拉列表,表格是dataGridView。
主要代码及注释:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
//using Microsoft.Office.Interop.Word;
//using Microsoft.Office.Interop.Excel;
using System.Threading;
namespace ComputerManage
{
public partial class Form1 : Form
{
OleDbConnection conn = new OleDbConnection("Data Source=" + System.Windows.Forms.Application.StartupPath + "\\config\\cinfor.mdb;Provider=Microsoft.Jet.OLEDB.4.0");
Form2 dataEdit = new Form2();
// int rowIndex = -1;
// bool serchFlag = false;
public Form1()
{
InitializeComponent();
//初始化
InitCombo();
InitGridView();
}
//初始化下拉列表
private void InitCombo()
{
this.comboGroup.Items.Add("全部");
this.comboGroup.Items.Add("502");
this.comboGroup.Items.Add("508");
this.comboGroup.Items.Add("510");
this.comboGroup.Items.Add("506");
this.comboGroup.Items.Add("617");
this.comboGroup.Items.Add("503");
this.comboGroup.Items.Add("530");
this.comboGroup.Items.Add("614");
this.comboState.Items.Add("全部");
this.comboState.Items.Add("使用中");
this.comboState.Items.Add("停用");
}
//初始化gridview1
private void InitGridView()
{
//不显示最后一行的空白行
dataGridView1.AllowUserToAddRows = false;
DataTable dt = new DataTable();
string allInformation = "select * from detailInfor order by ID";
dt = DataTableExcute(allInformation);
dataGridView1.DataSource = dt;
}
//得到所选行索引
public int getSelectedIndex()
{
int count = this.dataGridView1.Rows.Count;
for (int i = 0; i < count - 1; i++)
{
if (dataGridView1.Rows[i].Selected == true)
return i;
}
return -1;
}
//查询得到datatable
public DataTable DataTableExcute(string cmdstr)
{
OleDbCommand cmd = new OleDbCommand(cmdstr, conn);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmd);
DataTable datatable = new DataTable();
DataSet dataset = new DataSet();
try
{
conn.Open();
dataAdapter.Fill(dataset);
if (dataset.Tables[0].Rows.Count > 0)
{
datatable = dataset.Tables[0];
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
cmd.Dispose();
dataAdapter.Dispose();
}
return datatable;
}
//对数据表的操作
public bool DataSheetOperate(string cmdstr)
{
OleDbCommand cmd = new OleDbCommand(cmdstr, conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch
{
return false;
}
finally
{