C#使用DataSet类、DataTable类、DataRow类、OleDbConnection类、OleDbDataAdapter类编写简单数据库应用

//注意:请使用VS2010打开以下的源代码。
//源代码地址:http://pan.baidu.com/s/1j9WVR
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication22
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        OleDbConnection connection;
        OleDbDataAdapter command;
        DataSet dataSet;
        DataTable table;

        OleDbCommandBuilder builder;

        private void Form1_Load(object sender, EventArgs e)
        {
            //增加年龄数据(1~100)
            List<string> AgeList = new List<string>();
            for (int i = 0; i < 100; i++)
            {
                AgeList.Add((i + 1).ToString());
            }
            string [] AgeArray = AgeList.ToArray();
            comboBox1.Items.AddRange(AgeArray);
            comboBox1.Text = "20";

            //查找数据库
            connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Info.mdb;");
            command = new OleDbDataAdapter("Select * From Information", connection);
            dataSet = new DataSet("Info");
            command.Fill(dataSet, "Information");

            builder = new OleDbCommandBuilder(command);

            //显示数据库
            table = dataSet.Tables["Information"];
            dataGridView1.DataSource = table;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            char[] tempChars = textBox1.Text.Trim().ToArray();
            List<char> validChars= new List<char>();

            for (int i=0;i<tempChars.Length;i++)
            {
                if(!char.IsNumber(tempChars[i]))
                {
                    tempChars=validChars.ToArray();
                    textBox1.Text = new string(tempChars);
                    textBox1.SelectionStart = textBox1.Text.Length;
                    break;
                }
                else
                {
                    validChars.Add(tempChars[i]);
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (textBox1.Text.Trim() == "")
                {
                    throw new Exception("身份识别码不能空!");
                }
                else if(textBox1.Text.Trim().Length<6)
                {
                    throw new Exception("身份识别码不能小于6位!");
                }

                //检查是否有身份识别码重复的
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    if ((string)table.Rows[i]["ID"] == textBox1.Text.Trim())
                    {
                        throw new Exception("已经存在" + textBox1.Text.Trim() + ",请勿重复添加!");
                    }
                }

                //添加操作
                DataRow row = table.NewRow();
                row["ID"] = textBox1.Text.Trim();
                row["Name"] = textBox2.Text.Trim();
                row["Age"] = comboBox1.Text;
                if (radioButton1.Checked == true)
                {
                    row["Gender"] = "男";
                }
                else
                {
                    row["Gender"] = "女";
                }
                table.Rows.Add(row);


                command.Update(dataSet, "Information");
                dataGridView1.DataSource = table;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                //删除操作
                if (dataGridView1.CurrentCell == null)
                {
                    throw new Exception("无任何内容可删!");
                }

                if (dataGridView1.CurrentCell.RowIndex != -1)
                {
                    table.Rows[dataGridView1.CurrentCell.RowIndex].Delete();
                }
                else
                {
                    throw new Exception("未在表格内选择任一个单元格!");
                }

                command.Update(dataSet, "Information");
                dataGridView1.DataSource = table;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //表格上的内容填至相应的文本框等控件
            textBox1.Text =(string) dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["ID"].Value;
            textBox2.Text = (string)dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["Name"].Value;
            comboBox1.Text=(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["Age"].Value).ToString();
            if ((string)dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["Gender"].Value == "男")
            {
                radioButton1.Checked = true;
            }
            else
            {
                radioButton2.Checked = true;
            }
        }

        private void textBox1_MouseClick(object sender, MouseEventArgs e)
        {
            textBox1.SelectAll();
        }

        private void textBox2_MouseClick(object sender, MouseEventArgs e)
        {
            textBox2.SelectAll();
        }

    }
}

运行结果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hongten

Java Web 网络留言板8

  admin:id,name ,password                  <pk>id

541
来自专栏二进制文集

Struts1 增删改查

本篇文章介绍如何使用Struts1进行增删改查,仅是对自己学习的记录,并没有深入分析每个模块(不重复造轮子O(∩_∩)O~)。

723
来自专栏java初学

j2ee—框架(2):Servlet+JSP实现基本的登录功能(v2.0)

33913
来自专栏Hongten

JSP 一讲

492
来自专栏lgp20151222

用cookie实现记住密码

733
来自专栏Hongten

Java Web 网络留言板5 (javaBean技术)

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <%@ include fi...

713
来自专栏菩提树下的杨过

温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值

单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如...

1995
来自专栏xingoo, 一个梦想做发明家的程序员

文件上传---动作条

  利用Apache commons fileupload上传文件,直接显示其完成的进度条。----示例代码源自《JAVA WEB王者归来》   1 首先要显示...

1858
来自专栏个人随笔

体检套餐管理系统 -- Dictionary<K,V>双列集合

本文章为 Dictionary<K,V>双列集合开发项目,如需要List<T>单列集合开发的此项目,请到楼主博客园寻找 博客网址:http://www.cnbl...

2655
来自专栏Hongten

Java Web 网络留言板

guestbook:id ,name,phone,email,title,content,time;                   <pk>id

872

扫码关注云+社区