C#开发的MDI架构+Access数据库应用程序(增删改查)
学习要点
1.C#操作Access数据库,实现增/删/改/查功能
2.实现从Excel导入数据到Access数据库
3.简单的MDI框架实现(学习重点!!!)
4.业务逻辑分层(界面展示层,业务逻辑层,数据访问层)
5.接口应用,创建观察者模式
6.C/S结构的系统框架设计
程序截图:

图1:主窗体

图2:导入XLS文件界面
图3:解决方案
连接Access数据库
public System.Data.OleDb.OleDbConnection CreateExcelConnection(string excelPath)
{
string connStr = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended
Properties=Excel 8.0;", excelPath);
OleDbConnection conn = new OleDbConnection(connStr);
if (conn.State != ConnectionState.Connecting) conn.Open();
return conn;
}
{
string connStr = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended
Properties=Excel 8.0;", excelPath);
OleDbConnection conn = new OleDbConnection(connStr);
if (conn.State != ConnectionState.Connecting) conn.Open();
return conn;
}
实现从Excel导入数据到Access数据库
/*
* 易学原创作品,转载请注明出处
* 本文来自易学网www.vjsdn.com 版权所有
*/
public class SelectExcel
{
public static DataTable Select()
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Microsoft Excel File(*.xls)|*.xls";
if (DialogResult.OK == dlg.ShowDialog())
{
DataTable dt = DataProvider.Instance.GetExcelTable(dlg.FileName, "Gumball&Jawbreaker");
return dt;
}
return null;
}
public static void FillData()
{
}
public static DataTable GetSheet(string excelFile)
{
OleDbConnection conn = DataProvider.Instance.CreateExcelConnection(excelFile);
DataTable dt1 = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
conn.Close();
return dt1;
}
}
* 易学原创作品,转载请注明出处
* 本文来自易学网www.vjsdn.com 版权所有
*/
public class SelectExcel
{
public static DataTable Select()
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Microsoft Excel File(*.xls)|*.xls";
if (DialogResult.OK == dlg.ShowDialog())
{
DataTable dt = DataProvider.Instance.GetExcelTable(dlg.FileName, "Gumball&Jawbreaker");
return dt;
}
return null;
}
public static void FillData()
{
}
public static DataTable GetSheet(string excelFile)
{
OleDbConnection conn = DataProvider.Instance.CreateExcelConnection(excelFile);
DataTable dt1 = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
conn.Close();
return dt1;
}
}
简单的MDI框架实现
定义IToolbarRegister接口
/// <summary>
/// 工具栏控件接口
/// </summary>
public interface IToolbarRegister : IDisposable
{
void RegisterButton(IList buttons); //注册按钮
void Dispose(); //重置工具栏按钮
IButtonInfo CreateSeperator();//创建分隔按钮,如"|"
/// <summary>
/// 创建工具栏上的按钮.
/// </summary>
/// <param name="name">按钮名称:如btnSave,btnClose</param>
/// <param name="caption">按钮名称</param>
/// <param name="image">按钮图片</param>
/// <param name="size">按钮大小</param>
/// <param name="clickEvent">按钮的Click事件</param>
/// <returns></returns>
IButtonInfo CreateButton(string name, string caption, Bitmap image, Size size, OnButtonClick clickEvent);
}
/// 工具栏控件接口
/// </summary>
public interface IToolbarRegister : IDisposable
{
void RegisterButton(IList buttons); //注册按钮
void Dispose(); //重置工具栏按钮
IButtonInfo CreateSeperator();//创建分隔按钮,如"|"
/// <summary>
/// 创建工具栏上的按钮.
/// </summary>
/// <param name="name">按钮名称:如btnSave,btnClose</param>
/// <param name="caption">按钮名称</param>
/// <param name="image">按钮图片</param>
/// <param name="size">按钮大小</param>
/// <param name="clickEvent">按钮的Click事件</param>
/// <returns></returns>
IButtonInfo CreateButton(string name, string caption, Bitmap image, Size size, OnButtonClick clickEvent);
}
定义MDI子窗体的接口
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
/*
* 易学原创作品,转载请注明出处
* 本文来自易学网www.vjsdn.com 版权所有
*/
namespace VJSDN_P2009.Interfaces
{
/// <summary>
/// MDI子窗体的接口
/// </summary>
public interface IMdiChildForm
{
//子窗体的工具栏组件
IToolbarRegister ToolbarRegister { get;set; }
// 注册MDI窗体内的ToolBar.param mdiForm ToolBar管理对象的实例
void RegisterToolBar(IToolbarRegister toolBarRegister);
void RegisterObserver(IObserver[] observers); //注册子窗子观察者
IList Buttons { get;} //返回窗体的按钮
void InitButtons(); //初始化窗体的按钮
bool IsClosing { get;set;} //窗体是否在关闭状态
}
/// <summary>
/// 系统按钮
/// </summary>
public interface ISystemButtons
{
IButtonInfo[] GetSystemButtons();
void DoClose(IButtonInfo button); //关闭窗体
void DoHelp(IButtonInfo button); //打开帮助
}
/// <summary>
/// 支持数据操作的接口
/// </summary>
public interface IDataOperatable
{
IButtonInfo[] GetDataOperatableButtons();
void DoViewContent(IButtonInfo button);//查看数据
void DoAdd(IButtonInfo button);
void DoEdit(IButtonInfo button);
void DoCancel(IButtonInfo button);
void DoSave(IButtonInfo button);
void DoDelete(IButtonInfo button);
}
/// <summary>
/// 支持打印功能的接口
/// </summary>
public interface IPrintableForm
{
IButtonInfo[] GetPrintableButtons();
void DoPreview(IButtonInfo button);
void DoPrint(IButtonInfo button);
}
/// <summary>
/// 支持锁定/解除锁定功能的接口
/// </summary>
public interface ILockableForm
{
IButtonInfo[] GetLockableButtons();
void DoLock(IButtonInfo button);
void DoUnlock(IButtonInfo button);
}
}
using System.Collections.Generic;
using System.Text;
using System.Collections;
/*
* 易学原创作品,转载请注明出处
* 本文来自易学网www.vjsdn.com 版权所有
*/
namespace VJSDN_P2009.Interfaces
{
/// <summary>
/// MDI子窗体的接口
/// </summary>
public interface IMdiChildForm
{
//子窗体的工具栏组件
IToolbarRegister ToolbarRegister { get;set; }
// 注册MDI窗体内的ToolBar.param mdiForm ToolBar管理对象的实例
void RegisterToolBar(IToolbarRegister toolBarRegister);
void RegisterObserver(IObserver[] observers); //注册子窗子观察者
IList Buttons { get;} //返回窗体的按钮
void InitButtons(); //初始化窗体的按钮
bool IsClosing { get;set;} //窗体是否在关闭状态
}
/// <summary>
/// 系统按钮
/// </summary>
public interface ISystemButtons
{
IButtonInfo[] GetSystemButtons();
void DoClose(IButtonInfo button); //关闭窗体
void DoHelp(IButtonInfo button); //打开帮助
}
/// <summary>
/// 支持数据操作的接口
/// </summary>
public interface IDataOperatable
{
IButtonInfo[] GetDataOperatableButtons();
void DoViewContent(IButtonInfo button);//查看数据
void DoAdd(IButtonInfo button);
void DoEdit(IButtonInfo button);
void DoCancel(IButtonInfo button);
void DoSave(IButtonInfo button);
void DoDelete(IButtonInfo button);
}
/// <summary>
/// 支持打印功能的接口
/// </summary>
public interface IPrintableForm
{
IButtonInfo[] GetPrintableButtons();
void DoPreview(IButtonInfo button);
void DoPrint(IButtonInfo button);
}
/// <summary>
/// 支持锁定/解除锁定功能的接口
/// </summary>
public interface ILockableForm
{
IButtonInfo[] GetLockableButtons();
void DoLock(IButtonInfo button);
void DoUnlock(IButtonInfo button);
}
}
定义MDI主窗体接口
/// <summary>
/// MDI主窗体接口
/// </summary>
public interface IMdiForm
{
IToolbarRegister MdiToolbar { get;set;} //主窗体的工具栏
IObserver[] MdiObservers { get;} //主窗体动态信息观察者
void RegisterMdiButtons(); //注册MDI主窗体的工具栏的按钮
}
/// MDI主窗体接口
/// </summary>
public interface IMdiForm
{
IToolbarRegister MdiToolbar { get;set;} //主窗体的工具栏
IObserver[] MdiObservers { get;} //主窗体动态信息观察者
void RegisterMdiButtons(); //注册MDI主窗体的工具栏的按钮
}
MDI主窗体实现
/*
* 易学原创作品,转载请注明出处
* 本文来自易学网www.vjsdn.com 版权所有
*/
public partial class frmMDI : Form, IMdiForm
{
//主窗体上的按钮工具栏。ToolBar
private IToolbarRegister _MdiToolbar = null;
public frmMDI()
{
InitializeComponent();
DataService.SetupDBPath();
}
private void frmMDI_Load(object sender, EventArgs e)
{
this._MdiToolbar = new ToolStripRegister(this);
this.RegisterMdiButtons();
}
/// <summary>
/// MDI主窗体的工具栏
/// </summary>
public IToolbarRegister MdiToolbar { get { return _MdiToolbar; } set { _MdiToolbar = value; } }
/// <summary>
/// 注册MDI主窗体功能的按钮
/// </summary>
public void RegisterMdiButtons()
{
IList btns = new ArrayList();
btns.Add(this.MdiToolbar.CreateButton("btnHelp", "Help",
global::VJSDN_P2009.Properties.Resources._24_Help, new Size(57, 28), this.DoHelp));
btns.Add(this.MdiToolbar.CreateButton("btnClose", "Close",
global::VJSDN_P2009.Properties.Resources._24_Exit, new Size(57, 28), this.DoClose));
btns.Add(this.MdiToolbar.CreateSeperator());
btns.Add(this.MdiToolbar.CreateButton("btnLilyInput", "Lily Input",
global::VJSDN_P2009.Properties.Resources._24_Edit, new Size(57, 28), this.DoLilyInput));
btns.Add(this.MdiToolbar.CreateButton("btnDavidInput", "David Input",
global::VJSDN_P2009.Properties.Resources._24_Edit, new Size(57, 28), this.DoDavidInput));
btns.Add(this.MdiToolbar.CreateButton("btnWaltInput", "Walt Input",
global::VJSDN_P2009.Properties.Resources._24_Edit, new Size(57, 28), this.DoWaltInput));
btns.Add(this.MdiToolbar.CreateSeperator());
btns.Add(this.MdiToolbar.CreateButton("btnProductInquire", "Product Inquire",
global::VJSDN_P2009.Properties.Resources._24_ViewContent, new Size(57, 28), this.DoInquireProduct));
this.MdiToolbar.RegisterButton(btns);
}
/// <summary>
/// MDI主窗体观察者列表
/// </summary>
public IObserver[] MdiObservers
{
get
{
IObserver[] os = new IObserver[2];
os[0] = new ObserverCloseAllChild(this);
os[1] = new ObserverFormState(this, this.tsFormState);
return os;
}
}
public void DoInquireProduct(IButtonInfo sender)
{
//menuItemLily.PerformClick();
}
public void DoLilyInput(IButtonInfo sender)
{
menuItemLily.PerformClick();
}
public void DoDavidInput(IButtonInfo sender)
{
menuItemDave.PerformClick();
}
public void DoWaltInput(IButtonInfo sender)
{
menuItemWalt.PerformClick();
}
public void DoHelp(IButtonInfo sender)
{
new frmtest().Show();
//new frmAbout().ShowDialog();
}
public void DoClose(IButtonInfo sender)
{
if (Msg.AskQuestion("Exit application?")) this.Close();
}
private void menuChild1_Click(object sender, EventArgs e)
{
}
private void menuAboutMDI_Click(object sender, EventArgs e)
{
new frmAbout().ShowDialog();
}
private void menuURL_Click(object sender, EventArgs e)
{
MdiTools.OpenIE("http://www.vjsdn.com");
}
private void menuItemLily_Click(object sender, EventArgs e)
{
MdiTools.OpenChildForm(this, typeof(frmLilyInput));
}
private void menuItemWalt_Click(object sender, EventArgs e)
{
MdiTools.OpenChildForm(this, typeof(frmWaltInput));
}
private void menuItemDave_Click(object sender, EventArgs e)
{
MdiTools.OpenChildForm(this, typeof(frmDavidInput));
}
}
* 易学原创作品,转载请注明出处
* 本文来自易学网www.vjsdn.com 版权所有
*/
public partial class frmMDI : Form, IMdiForm
{
//主窗体上的按钮工具栏。ToolBar
private IToolbarRegister _MdiToolbar = null;
public frmMDI()
{
InitializeComponent();
DataService.SetupDBPath();
}
private void frmMDI_Load(object sender, EventArgs e)
{
this._MdiToolbar = new ToolStripRegister(this);
this.RegisterMdiButtons();
}
/// <summary>
/// MDI主窗体的工具栏
/// </summary>
public IToolbarRegister MdiToolbar { get { return _MdiToolbar; } set { _MdiToolbar = value; } }
/// <summary>
/// 注册MDI主窗体功能的按钮
/// </summary>
public void RegisterMdiButtons()
{
IList btns = new ArrayList();
btns.Add(this.MdiToolbar.CreateButton("btnHelp", "Help",
global::VJSDN_P2009.Properties.Resources._24_Help, new Size(57, 28), this.DoHelp));
btns.Add(this.MdiToolbar.CreateButton("btnClose", "Close",
global::VJSDN_P2009.Properties.Resources._24_Exit, new Size(57, 28), this.DoClose));
btns.Add(this.MdiToolbar.CreateSeperator());
btns.Add(this.MdiToolbar.CreateButton("btnLilyInput", "Lily Input",
global::VJSDN_P2009.Properties.Resources._24_Edit, new Size(57, 28), this.DoLilyInput));
btns.Add(this.MdiToolbar.CreateButton("btnDavidInput", "David Input",
global::VJSDN_P2009.Properties.Resources._24_Edit, new Size(57, 28), this.DoDavidInput));
btns.Add(this.MdiToolbar.CreateButton("btnWaltInput", "Walt Input",
global::VJSDN_P2009.Properties.Resources._24_Edit, new Size(57, 28), this.DoWaltInput));
btns.Add(this.MdiToolbar.CreateSeperator());
btns.Add(this.MdiToolbar.CreateButton("btnProductInquire", "Product Inquire",
global::VJSDN_P2009.Properties.Resources._24_ViewContent, new Size(57, 28), this.DoInquireProduct));
this.MdiToolbar.RegisterButton(btns);
}
/// <summary>
/// MDI主窗体观察者列表
/// </summary>
public IObserver[] MdiObservers
{
get
{
IObserver[] os = new IObserver[2];
os[0] = new ObserverCloseAllChild(this);
os[1] = new ObserverFormState(this, this.tsFormState);
return os;
}
}
public void DoInquireProduct(IButtonInfo sender)
{
//menuItemLily.PerformClick();
}
public void DoLilyInput(IButtonInfo sender)
{
menuItemLily.PerformClick();
}
public void DoDavidInput(IButtonInfo sender)
{
menuItemDave.PerformClick();
}
public void DoWaltInput(IButtonInfo sender)
{
menuItemWalt.PerformClick();
}
public void DoHelp(IButtonInfo sender)
{
new frmtest().Show();
//new frmAbout().ShowDialog();
}
public void DoClose(IButtonInfo sender)
{
if (Msg.AskQuestion("Exit application?")) this.Close();
}
private void menuChild1_Click(object sender, EventArgs e)
{
}
private void menuAboutMDI_Click(object sender, EventArgs e)
{
new frmAbout().ShowDialog();
}
private void menuURL_Click(object sender, EventArgs e)
{
MdiTools.OpenIE("http://www.vjsdn.com");
}
private void menuItemLily_Click(object sender, EventArgs e)
{
MdiTools.OpenChildForm(this, typeof(frmLilyInput));
}
private void menuItemWalt_Click(object sender, EventArgs e)
{
MdiTools.OpenChildForm(this, typeof(frmWaltInput));
}
private void menuItemDave_Click(object sender, EventArgs e)
{
MdiTools.OpenChildForm(this, typeof(frmDavidInput));
}
}
Source Code for VIP:
参考文档:
C/S开发框架MDI架构及Toolbar按钮共享(原创)
C/S架构轻量级快速开发框架WinFramework架构图|C/S开发框架
Winform三层架构+WebService+权限管理系统软件开发平台(C#.NET开发)
Winform三层架构软件开发平台(C#.NET开发)
Winform企业级WCF快速开发框架平台(C/S架构+WCF+DevExpress+SQL多数据库)
CSFramework.WebApi后端框架Token令牌体系架构与应用详解
CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删改查数据
基于Winform三层架构+WCF+ORM模型的快速开发框架
C/S架构软件开发平台 | 旗舰版V6.0 | 自动创建数据库备份计划|C/S开发框架
C/S架构软件开发平台 | 旗舰版V6.0 | 自动备份数据库计划|C/S开发框架
C/S架构软件开发平台介绍
CSFramework.WebAPI 后端框架系统架构图|C/S开发框架
主窗体体系架构 / 逻辑架构 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
CSFramework.DB架构图|软件手册
OAuth 2.0 access_token / refresh_token 详解-C/S开发框架
C/S桌面应用程序技术架构-Winform快速开发框架
C/S开发框架MDI架构及Toolbar按钮共享(原创)
C/S架构轻量级快速开发框架WinFramework架构图|C/S开发框架
Winform三层架构+WebService+权限管理系统软件开发平台(C#.NET开发)
Winform三层架构软件开发平台(C#.NET开发)
Winform企业级WCF快速开发框架平台(C/S架构+WCF+DevExpress+SQL多数据库)
CSFramework.WebApi后端框架Token令牌体系架构与应用详解
CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删改查数据
基于Winform三层架构+WCF+ORM模型的快速开发框架
C/S架构软件开发平台 | 旗舰版V6.0 | 自动创建数据库备份计划|C/S开发框架
C/S架构软件开发平台 | 旗舰版V6.0 | 自动备份数据库计划|C/S开发框架
C/S架构软件开发平台介绍
CSFramework.WebAPI 后端框架系统架构图|C/S开发框架
主窗体体系架构 / 逻辑架构 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
CSFramework.DB架构图|软件手册
OAuth 2.0 access_token / refresh_token 详解-C/S开发框架
C/S桌面应用程序技术架构-Winform快速开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服

(VIP会员下载)