本文将写一个demo,验证一下这个简单框架的工作情况。
一、数据库准备
数据库采用 mysql
实体关系图
采用下面的脚本建立这个简单数据库
CREATE DATABASE `MARASUN_SQL_LAB` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
CREATE TABLE `class` (
`pk` int NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`number` tinyint DEFAULT NULL,
`address` varchar(64) DEFAULT NULL,
`last_modi_time` datetime DEFAULT CURRENT_TIMESTAMP,
`last_modi_by` varchar(16) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`backup` char(1) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'N',
`remark` varchar(45) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `ethnic` (
`pk` int NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`abrev` varchar(1) DEFAULT NULL,
`population` int unsigned DEFAULT NULL,
`location` varchar(45) DEFAULT NULL,
`introduction` varchar(45) DEFAULT NULL,
`festival` varchar(45) DEFAULT NULL,
`last_modi_time` datetime DEFAULT CURRENT_TIMESTAMP,
`last_modi_by` varchar(16) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`backup` char(1) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'N',
`remark` varchar(45) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`pk`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='民族';
CREATE TABLE `ethnic` (
`pk` int NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`abrev` varchar(1) DEFAULT NULL,
`population` int unsigned DEFAULT NULL,
`location` varchar(45) DEFAULT NULL,
`introduction` varchar(45) DEFAULT NULL,
`festival` varchar(45) DEFAULT NULL,
`last_modi_time` datetime DEFAULT CURRENT_TIMESTAMP,
`last_modi_by` varchar(16) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`backup` char(1) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'N',
`remark` varchar(45) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`pk`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='民族';
CREATE TABLE `students` (
`pk` int NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`ethnic_pk` int DEFAULT NULL,
`ethnic_name` varchar(45) DEFAULT NULL,
`gender` varchar(45) DEFAULT NULL,
`age` varchar(45) DEFAULT NULL,
`last_modi_time` datetime DEFAULT CURRENT_TIMESTAMP,
`last_modi_by` varchar(16) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`backup` char(1) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'N',
`remark` varchar(45) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `ethnic_pk_idx` (`ethnic_pk`),
CONSTRAINT `ethnic_pk` FOREIGN KEY (`ethnic_pk`) REFERENCES `ethnic` (`pk`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `cloumn_headtext` (
`pk` int NOT NULL AUTO_INCREMENT,
`column` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`head_text` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`pk`),
UNIQUE KEY `pk_UNIQUE` (`pk`)
) ENGINE=InnoDB AUTO_INCREMENT=1033 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
说明:本框架中为了能给DGV的HeadText一个友好的内容,增加了一个cloumn_headtext,用于对列名的解释。
二、基础数据录入
上述表中ethnic 和class是基础数据表,students 是业务数据表,该表引用 ethnic 和class表。
生成基础录入表
首先打开VS studio, 生成一个新的解决方案,maraSunDB,将本框架的基本文件(整理后上传,目前还没有整理)添加到项目中,注意命名空间是maraSunDB。
新建一个名字为 class 的, 如图
进入代码,可以看到
public partial class ClassForm : Form
{
public ClassForm()
{
InitializeComponent();
}
}
修改为
public partial class ClassForm : BaseInputForm
{
public ClassForm()
{
InitializeComponent();
}
}
进入设计器模式,可以看到界面已经发生改变
如图
进行必要的调整,增加下列控件,并增加Form_load 事件,
其中班级名称后的textbox 名称为 txt_name, tag 内容 人数后面的 NumericUpDown 名称为 nud_number
如图:
表示不许为空,以及唯一性。
双击界面增加 load 事件,然后再load事件中,加入下列代码
private void ClassForm_Load(object sender, EventArgs e)
{
InitInputForm("class", "班级录入", "班级", "name");
}
至此, 基本代码已经完成。
要想使用验证上面的代码,还要建立数据库连接字符串等等。本代码已经建立好输入界面,可以再运行后进行修改。在班级菜单中,增加下列代码
private void 班级ToolStripMenuItem_Click(object sender, EventArgs e)
{
ClassForm classFm = new ClassForm();
classFm.MdiParent = this;
classFm.Show();
}
编译运行
修改数据库连接参数
测试连接,如果连接正常,点击确定。
然后
得到
得到
点击 【增加】, 并且录入数据如下
点击 【保存】,得到
可以看到数据录入成功!还可以进行简单的查询修改操作等等,不再赘述。
还以对数据有效性进行检查,请自行测试。
是不是很简单?
仿照同样的方法,完成 ethnic 的录入。
下文将演示如何录入 students 这个比较复杂的表。
MaraSun BJFWDQ