1.本程序的使用的语言是C#,数据库是Access2003。主要是对员工信息进行简单的增删改查操作和对.ini配置文件的读写操作。

2.代码运行效果如下:





功能比较简单。其中在得到查询结果后,在查询结果界面上最上面的一行数字好像是根据数据库的列数自动获取到的,我本想把它删掉来着,但是没成功。

3.代码实现

点击查看代码。clsDbOperate类--主要是数据库连接和员工的增删改查操作。
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace UserInfoManage
{
public class clsDbOperate {
static string exePath = System.Environment.CurrentDirectory + "\\Data\\";//数据库在本程序中所在路径
static string Psd = "PTC8800"; OleDbConnection conn = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=" + exePath + "SystemData.mdb;" + "Jet OLEDB:Database Password=" + Psd);
OleDbCommand oleCommand = new OleDbCommand();//操作查询 private OleDbDataReader ole_reader = null;
private DataTable dt = null; public DataTable dtSelectResult(string sql) {
DataTable dt = new DataTable(); //新建表对象
try {
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sql, conn); //创建适配对象
da.Fill(dt); //用适配对象填充表对象
conn.Close();
} catch (Exception) {
} finally {
conn.Close();
}
return dt;
}
public int intSelectResultCount(string sql) {
DataSet ds = new DataSet(); //新建表对象
int n = 0;
try {
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sql, conn); //创建适配对象 da.Fill(ds); //用适配对象填充表对象
n = ds.Tables[0].Rows.Count;
} catch (Exception) {
} finally {
conn.Close();
}
return n;
}
public int Del_Ins_Upd_Result(string sql) {
int n = 0;
try {
conn.Open();
//增
//string sql = "insert into 表名(字段1,字段2,字段3,字段4)values(...)";
//删
//string sql = "delete from 表名 where ="...;
//改
//string sql = "update student set 字段1=" ...;
OleDbCommand comm = new OleDbCommand(sql, conn);
n = comm.ExecuteNonQuery();//执行sql语句
} catch (Exception ex) {
MessageBox.Show(ex.Message);
} finally {
conn.Close();
}
conn.Close();
return n;
}
/// <summary>
/// 从数据库里面获取数据
/// </summary>
///<param name="strSql">查询语句
/// <returns>数据列表</returns>
public DataTable GetDataTableFromDB(string strSql) {
if (exePath == null) {
return null;
}
try {
conn.Open();//打开连接
if (conn.State == ConnectionState.Closed) {
return null;
}
oleCommand.CommandText = strSql;
oleCommand.Connection = conn;
ole_reader = oleCommand.ExecuteReader(CommandBehavior.Default);
dt = ConvertOleDbReaderToDataTable(ref ole_reader);
ole_reader.Close();
ole_reader.Dispose();
} catch (System.Exception e) {
//Console.WriteLine(e.ToString());
MessageBox.Show(e.Message);
} finally {
if (conn.State != ConnectionState.Closed) {
conn.Close();
}
}
return dt;
}
/// <summary>
/// 转换数据格式
/// </summary>
///<param name="reader">数据源
/// <returns>数据列表</returns>
private DataTable ConvertOleDbReaderToDataTable(ref OleDbDataReader reader) {
DataTable dtTab = null;
DataRow dr = null;
int dataColumnCount = 0;
int i = 0;
dataColumnCount = reader.FieldCount;
dtTab = BuildAndInitDataTable(dataColumnCount);
dtTab.Rows.Add("序号", "工号", "姓名", "密码", "是否管理员", "登录次数");
if (dtTab == null) {
return null;
}
while (reader.Read()) {
dr = dtTab.NewRow(); for (i = 0; i < dataColumnCount; ++i) {
dr[i] = reader[i];
}
dtTab.Rows.Add(dr);
}
return dtTab;
}
/// <summary>
/// 创建并初始化数据列表
/// </summary>
///<param name="fieldCount">列的个数
/// <returns>数据列表</returns>
private DataTable BuildAndInitDataTable(int fieldCount) {
DataTable dtTab = null;
DataColumn dc = null;
int i = 0;
if (fieldCount <= 0) {
return null;
}
dtTab = new DataTable();
for (i = 0; i < fieldCount; ++i) {
dc = new DataColumn(i.ToString());
dtTab.Columns.Add(dc);
}
return dtTab;
}
}
}
点击查看代码。FileOperation类--.ini配置文件的操作类。主要是对FileConfig.ini文件进行读写操作
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.IO;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging; namespace UserInfoManage
{
public class FileOperation {
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="section">节点名称[如[TypeName]]</param>
/// <param name="key">键</param>
/// <param name="val">值</param>
/// <param name="filepath">文件路径</param>
/// <returns></returns>
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
/// <summary>
/// 读取INI文件
/// </summary>
/// <param name="section">节点名称</param>
/// <param name="key">键</param>
/// <param name="def">值</param>
/// <param name="retval">stringbulider对象</param>
/// <param name="size">字节大小</param>
/// <param name="filePath">文件路径</param>
/// <returns></returns>
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);
private string strSec = ""; //INI文件名 public string ReadFile(string strFilePath, string FieldName) {
string returnName = null;
if (File.Exists(strFilePath))//读取时先要判读INI文件是否存在
{
//strSec = Path.GetFileNameWithoutExtension(strFilePath);
strSec = "Information";
returnName = ContentValue(strFilePath, strSec, FieldName);
} else {
//MessageBox.Show("INI文件不存在");
}
return returnName;
} public int WriteFile(string strFilePath, string FieldName, string FieldValue) {
int ret = 0;
try {
//根据INI文件名设置要写入INI文件的节点名称
//此处的节点名称完全可以根据实际需要进行配置
//strSec = Path.GetFileNameWithoutExtension(strFilePath); //获取INI文件的节点名称
strSec = "Information";
WritePrivateProfileString(strSec, FieldName, FieldValue.Trim(), strFilePath);
ret = -1;
//MessageBox.Show("写入成功");
} catch (Exception) {
}
return ret;
} private string ContentValue(string strFilePath, string Section, string key) //自定义函数
{
StringBuilder temp = new StringBuilder(1024);
GetPrivateProfileString(Section, key, "", temp, 1024, strFilePath);
//对应定义的读取函数,返回值
return temp.ToString();
}
}
}
点击查看代码。FrmUserManager类--界面类。主要是对用户的信息进行操作
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 UserInfoManage;
using UserInfoManage.from;
using System.Runtime.InteropServices; namespace UserInfoManage {
public partial class FrmUserManager : Form {
private clsDbOperate dbOperate;
private FileOperation fileOperation;
private string strUserId;
private string strUserName;
private string strPassword;
private string strFilePath = Application.StartupPath + @"\FileConfig.ini";//定义INI文件的路径 public FrmUserManager() {
InitializeComponent();
}
private void FrmUserManager_Load(object sender, EventArgs e) {
dbOperate = new clsDbOperate();
RefreshUserInfo();
dgvUserInfo.AllowUserToAddRows = false;
dgvUserInfo.SelectionMode = DataGridViewSelectionMode.FullRowSelect;//设置为整行被选中
dgvUserInfo.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
dgvUserInfo.BackgroundColor = Color.White;
dgvUserInfo.ReadOnly = true;
dgvUserInfo.Columns[0].HeaderText = "序号";
dgvUserInfo.Columns[1].HeaderText = "工号";
dgvUserInfo.Columns[2].HeaderText = "姓名";
dgvUserInfo.Columns[3].HeaderText = "密码";
dgvUserInfo.Columns[4].HeaderText = "是否管理员";
dgvUserInfo.Columns[5].HeaderText = "登录次数"; fileOperation = new FileOperation();
}
/// <summary>
/// 增加操作
/// </summary>
private void btnAddUserInfo_Click(object sender, EventArgs e) {
if (txtUserID.Text == "" || txtUserName.Text == "" || txtUserPsd.Text == "") {
MessageBox.Show("员工信息不完整,无法添加!带*为必填项", "提示", MessageBoxButtons.OK);
} else {
string sql = string.Empty;
string strIsAdmin = string.Empty;
strIsAdmin = chkIsAdmin.Checked == true ? "1" : "0";
try {
sql = "select UserName from userInfo where UserID='" + txtUserID.Text + "'";
if (dbOperate.intSelectResultCount(sql) > 0) {
MessageBox.Show("已存在的员工工号!", "提示", MessageBoxButtons.OK);
return;
} else {
sql = "insert into userInfo(UserID,UserName,UserPsd,IsAdmin,LoginTimes)";
sql += "Values('" + txtUserID.Text + "','" + txtUserName.Text + "','" + txtUserPsd.Text + "','" + strIsAdmin + "',0)";
if (dbOperate.Del_Ins_Upd_Result(sql) > 0) {
RefreshUserInfo();
MessageBox.Show("添加成功!", "提示", MessageBoxButtons.OK);
ClearUserInfo();
} else
MessageBox.Show("添加失败,请查找原因", "提示", MessageBoxButtons.OK);
}
} catch (Exception) {
MessageBox.Show("添加失败,请查找原因", "提示", MessageBoxButtons.OK);
}
}
}
/// <summary>
/// 修改用户信息
/// </summary>
private void btnModifyUserInfo_Click(object sender, EventArgs e) {
if (txtUserID.Text == "" || txtUserName.Text == "" || txtUserPsd.Text == "") {
MessageBox.Show("员工信息不完整,无法添加!带*为必填选项", "提示", MessageBoxButtons.OK);
} else {
string sql = string.Empty;
string strIsAdmin = string.Empty;
try {
strIsAdmin = chkIsAdmin.Checked == true ? "1" : "0";
sql = "update userInfo set UserID='" + txtUserID.Text + "',UserName='" + txtUserName.Text + "',UserPsd='" + txtUserPsd.Text + "',IsAdmin='" + strIsAdmin + "'";
sql += " where UserID='" + txtUserID.Text + "'";
if (dbOperate.Del_Ins_Upd_Result(sql) > 0) {
RefreshUserInfo();
MessageBox.Show("修改成功", "提示", MessageBoxButtons.OK);
ClearUserInfo();
} else
MessageBox.Show("修改失败,请查找原因", "提示", MessageBoxButtons.OK);
} catch (Exception) {
MessageBox.Show("修改失败,请查找原因", "提示", MessageBoxButtons.OK);
}
}
}
/// <summary>
/// 删除用户信息
/// </summary>
private void btnDelUserInfo_Click(object sender, EventArgs e) {
if (txtUserID.Text == "" || txtUserName.Text == "") {
MessageBox.Show("请选择要删除的记录", "提示", MessageBoxButtons.OK);
} else {
if (MessageBox.Show("确定要删除该员工信息吗?\n" + "员工账号:" + txtUserID.Text + "\n" + "员工姓名:" + txtUserName.Text, "删除前确认", MessageBoxButtons.YesNo) == DialogResult.Yes) {
try {
string sql = "select * from userInfo where UserID='" + txtUserID.Text + "' and UserName='" + txtUserName.Text + "'";
if (dbOperate.intSelectResultCount(sql) > 0) {
sql = "delete from UserInfo where UserID='" + txtUserID.Text + "' and UserName='" + txtUserName.Text + "'";
dbOperate.Del_Ins_Upd_Result(sql);
RefreshUserInfo();
MessageBox.Show("删除成功", "提示", MessageBoxButtons.OK);
ClearUserInfo();
} else
MessageBox.Show("删除失败,数据库中无此员工信息", "提示", MessageBoxButtons.OK);
} catch (Exception) {
MessageBox.Show("删除失败,请查找原因", "提示", MessageBoxButtons.OK);
}
}
}
}
private void txtUserID_KeyPress(object sender, KeyPressEventArgs e) {
if (!(char.IsNumber(e.KeyChar)) && e.KeyChar != (char)8) {
e.Handled = true;
}
}
/// <summary>
/// 刷新用户信息
/// </summary>
private void RefreshUserInfo() {
string sql = "select * from userInfo";
DataTable dt = dbOperate.dtSelectResult(sql);
dgvUserInfo.DataSource = dt;
}
/// <summary>
/// 清除用户信息
/// </summary>
private void ClearUserInfo() {
txtUserID.Text = "";
txtUserName.Text = "";
txtUserPsd.Text = "";
chkIsAdmin.Checked = false;
} private void dgvUserInfo_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
if (e.ColumnIndex == 3) {
if (e.Value != null && e.Value.ToString().Length > 0) {
e.Value = new string('*', e.Value.ToString().Length);
}
}
if (e.ColumnIndex == 4) {
if (e.Value.Equals("1")) {
e.Value = "是";
} else
e.Value = "否";
}
} private void dgvUserInfo_CellClick(object sender, DataGridViewCellEventArgs e) {
try {
txtUserID.Text = dgvUserInfo.Rows[e.RowIndex].Cells[1].Value.ToString();
txtUserName.Text = dgvUserInfo.Rows[e.RowIndex].Cells[2].Value.ToString();
txtUserPsd.Text = dgvUserInfo.Rows[e.RowIndex].Cells[3].Value.ToString();
chkIsAdmin.Checked = dgvUserInfo.Rows[e.RowIndex].Cells[4].Value.ToString() == "1" ? true : false;
} catch (Exception) { }
} public DataTable dt;
private void btnSelect_Click(object sender, EventArgs e) {
if(cboSelectItems.SelectedIndex == 0) {
if (txtSelectContent.Text == "") {
MessageBox.Show("请输入要查询的用户ID");
return;
} else {
/*string sql = "select * from userInfo where UserID='" + txtSelectContent.Text + "'";
dt = new DataTable();
dt = dbOperate.GetDataTableFromDB(sql);
//查询信息界面
SelectInfo selectInfo = new SelectInfo(dt);
//selectInfo.ShowDialog();
selectInfo.Show(this);*/
string sql = "select * from userInfo where UserID='" + txtSelectContent.Text + "'";
if (dbOperate.intSelectResultCount(sql) > 0) {
dt = new DataTable();
dt = dbOperate.GetDataTableFromDB(sql);
//查询信息界面
SelectInfo selectInfo = new SelectInfo(dt);
//selectInfo.ShowDialog();
selectInfo.Show(this);
} else {
MessageBox.Show("查无此人", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
} else {
if (txtSelectContent.Text == "") {
MessageBox.Show("请输入要查询的用户姓名");
return;
} else {
string sql = "select * from userInfo where UserName= '" + txtSelectContent.Text + "'";
if (dbOperate.intSelectResultCount(sql) > 0) {
dt = new DataTable();
dt = dbOperate.GetDataTableFromDB(sql);
SelectInfo selectInfo = new SelectInfo(dt);
//selectInfo.ShowDialog();
selectInfo.Show(this);
} else {
MessageBox.Show("查无此人", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
} } /// <summary>
/// 将员工信息写入FileConfig.ini配置文件
/// </summary>
private void btnWrite_Click(object sender, EventArgs e) {
if ((txtUserID.Text.Trim() != "") && (txtUserName.Text.Trim() != "") && txtUserPsd.Text.Trim() != "") {
int ret;
ret = fileOperation.WriteFile(strFilePath, "UserID", txtUserID.Text);
ret = fileOperation.WriteFile(strFilePath, "UserName", txtUserName.Text);
ret = fileOperation.WriteFile(strFilePath, "UserPsd", txtUserPsd.Text);
if (ret == -1) {
MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK);
} else {
MessageBox.Show("保存失败", "提示", MessageBoxButtons.OK);
}
} else {
MessageBox.Show("工号或姓名不能为空", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
/// <summary>
/// 将员工信息从FileConfig.ini文件中读出
/// </summary>
private void btnRead_Click(object sender, EventArgs e) {
strUserId = fileOperation.ReadFile(strFilePath, "UserID");
strUserName = fileOperation.ReadFile(strFilePath, "UserName");
strPassword = fileOperation.ReadFile(strFilePath, "UserPsd"); txtUserID.Text = strUserId;
txtUserName.Text = strUserName;
txtUserPsd.Text = strPassword;
}
}
}
点击查看代码。SelectInfo类--查询结果的界面。主要用来显示查询到的用户信息。这里根据个人需要,如果不需要重新新建一个几面来显示查询到的信息,则可以把界面里面的DataGridView放到FrmUserManager类中。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace UserInfoManage.from {
public partial class SelectInfo : Form {
private DataTable dt;
public SelectInfo(DataTable dt) {
InitializeComponent();
this.dt = dt;
} private void SelectInfo_Load(object sender, EventArgs e) {
dgvSelectInfo.DataSource = dt;
} private void dgvSelectInfo_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
if (e.ColumnIndex == 3 && e.RowIndex != 0) {
if (e.Value != null && e.Value.ToString().Length > 0) {
e.Value = new string('*', e.Value.ToString().Length);
}
}
if (e.ColumnIndex == 4) {
if (e.Value.Equals("1")) {
e.Value = "是";
} else {
e.Value = "否";
}
}
}
}
}

C#+Access 员工信息管理--简单的增删改查操作和.ini配置文件的读写操作。的更多相关文章

  1. MVC3.0+knockout.js+Ajax 实现简单的增删改查

    MVC3.0+knockout.js+Ajax 实现简单的增删改查 自从到北京入职以来就再也没有接触MVC,很多都已经淡忘了,最近一直在看knockout.js 和webAPI,本来打算采用MVC+k ...

  2. salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)

    此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...

  3. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...

  4. 通过JDBC进行简单的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  5. MyBatis简单的增删改查以及简单的分页查询实现

    MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...

  6. 初试KONCKOUT+WEBAPI简单实现增删改查

    初试KONCKOUT+WEBAPI简单实现增删改查 前言 konckout.js本人也是刚刚接触,也是初学,本文的目的是使用ko和asp.net mvc4 webapi来实现一个简单增删改查操作.Kn ...

  7. SpringMVC之简单的增删改查示例(SSM整合)

    本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...

  8. python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作

    1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...

  9. 通过flask实现web页面简单的增删改查bootstrap美化版

    通过flask实现web页面简单的增删改查bootstrap美化版 项目目录结构 [root@node1 python]# tree -L 2 . ├── animate.css ├── fileut ...

随机推荐

  1. 如何构建Docker镜像

    构建Docker 镜像有如下两种方法: (一)使用docker commit命令.(二)使用docker build命令和 Dockerfile 文件.在这里并不推荐使用docker commit来构 ...

  2. 记一次Prometheus代理性能优化问题

    最近有做一个Prometheus metrics代理的一个小项目,暂称为prom-proxy,目的是为了解析特定的指标(如容器.traefik.istio等指标),然后在原始指标中加入应用ID(当然还 ...

  3. CF932G Palindrome Partition(回文自动机)

    CF932G Palindrome Partition(回文自动机) Luogu 题解时间 首先将字符串 $ s[1...n] $ 变成 $ s[1]s[n]s[2]s[n-1]... $ 就变成了求 ...

  4. webdriver原理及操作

    webdriver原理: 1. WebDriver 启动目标浏览器,并绑定到指定端口.该启动的浏览器实例,做为 webdriver 的 remote server. 2. Client 端通过 Com ...

  5. ServletConfig对象和ServletContext对象有什么区别?

    一个Servlet对应有一个ServletConfig对象,可以用来读取初始化参数. 一个webapp对应一个ServletContext对象. ServletContext对象获取初始化定义的参数. ...

  6. Java连接ArtemisMQ,出现Timed out waiting to receive cluster topology. Group:null异常

    完整异常内容:org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JM ...

  7. vue循环时设置多选框禁用状态,v-for

    <div v-for="user in users" >            <el-radio v-bind:disabled="user.id== ...

  8. hadoop 分布式系统与Hadoop MapReduce

    Hadoop分为两部分 Hadoop MapReduce和Hadoop分布式文件系统 1分布式系统由Master Node 和多台 slave Node组成. 1.1MasterNode Master ...

  9. 错误问题之“Apache Log4j 漏洞,在版本为包含2.14以内!”

    漏洞概述 Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器. Log4j 1.2 中包含一个 SocketServer 类,该类容易受到不可信数据反序列化的影响,当侦听 ...

  10. AD学习总结

     一.常用快捷键总结 快捷键tab:显示放置的线.元器件.管脚等详细信息(可以修改) 快捷键p:打开放置内容:在元器件原理图中放置能容主要是线等(组合键p+w  启动 "线" 操作 ...