为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里;

为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据;

我们新建一个文件夹,把这两个类放在这个文件夹(App)里,以后,把命名空间写上就可以使用这两个类了。

为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据。

首先,建立程序的主窗体

㈠添加数据

当点击“增加”,弹出一个子窗体,通过子窗体往数据库中添加一条数据

private void button1_Click(object sender, EventArgs e)
{
Form5 insert= new Form5();
insert.Owner = this;
insert.Show();
}

子窗体里的函数:

public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//将文本框中的数据存入SqlData类型的变量udata中
SqlData udata = new SqlData();
udata.Name = textBox1.Text;
udata.Code = textBox2.Text; new SqlDA().addData(udata);//调用添加数据函数,添加数据udata
} }

运行程序,添加数据,查看结果

㈡查询数据

第一个查询形式, 
首先我们需要窗口一加载,就显示出数据库中的所有数据

首先,在存放方法的SqlDA类中,添加一个获取数据的成员方法,该方法能返回一个数据集合

//查询数据的方法
public List<SqlData> select()
{
List<SqlData> list=new List<SqlData>();
//连接数据库,访问数据
_cmd = _con.CreateCommand();
_con.Open();
_cmd.CommandText = "select *from users";
SqlDataReader dr= _cmd.ExecuteReader(); //将数据库数据转换成Sqldata类型,并放入list集合中
while (dr.Read())
{
SqlData data=new SqlData();
data.Code = dr["code"].ToString();
data.Name = dr["name"].ToString();
data.Pwd = dr["pwd"].ToString();
list.Add(data);
}
_con.Close();
return list;
}

然后定义一个绑定数据函数,该函数将上面成员方法返回的数据绑定到listview1中,显示出来

//绑定数据函数
public void bindData(List<SqlData> list)
{
//构建表结构
listView1.Columns.Add("编号");
listView1.Columns.Add("用户名");
listView1.Columns.Add("密码");
//将集合中的数据放入listview1中
foreach (SqlData data in list)
{
ListViewItem it = new ListViewItem();//构建一个listviewitem对象,通过它把数据放入listview1中
it.Text = data.Code;
it.SubItems.Add(data.Name);
it.SubItems.Add(data.Pwd ); listView1.Items.Add(it);//将数据放入listview1的items集合中,
} }

然后窗体加载事件中,追加绑定数据函数的委托

//窗体一加载,在listview1中绑定数据
private void Form4_Load(object sender, EventArgs e)
{
bindData(new SqlDA().select()); }

运行结果

第二个查询形式, 
在窗口中输入用户名,根据用户名进行模糊查询

首先写一个需要参数(用户名)的查询函数,我们可以写一个select的重载函数,如下

//查询数据的方法2,需要一个字符串参数,与上面的函数构成重载
public List<SqlData> select(string uname)
{
List<SqlData> list = new List<SqlData>();
//连接数据库,访问数据
_cmd = _con.CreateCommand();
_con.Open();
_cmd.CommandText = "select *from users where name like '%"+uname+"%'";
SqlDataReader dr = _cmd.ExecuteReader(); //将访问到的数据库数据转换成Sqldata类型,并放入list集合中
while (dr.Read())
{
SqlData data = new SqlData();
data.Code = dr["code"].ToString();
data.Name = dr["name"].ToString();
data.Pwd = dr["pwd"].ToString();
list.Add(data);
}
_con.Close();
return list;
}

点击“查询”按钮

//通过输入用户名,查询数据
private void button4_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
bindData(new SqlDA().select(textBox1.Text));
}

㈢修改数据

首先,将主窗口的FullRowSelect属性设为True,使行数据可选

点击“修改”,弹出以下“修改”子窗体

修改数据不需要修改编号,将“修改”子窗体的第一个文本框的“Enabled”属性设为false。

“修改”子窗体的代码

public partial class Form6 : Form
{ public Form6()
{
InitializeComponent();
}
//重写修改窗口的构造函数,显示选中项的数据
public Form6(SqlData data)
{
InitializeComponent(); textBox3.Text=data.Code;
textBox1.Text=data.Name;
textBox2.Text=data.Pwd; } private void button1_Click(object sender, EventArgs e)
{
//将输入的内容转成SqlData格式
SqlData data = new SqlData();
data.Code = textBox3.Text;
data.Name = textBox1.Text;
data.Pwd = textBox2.Text;
//调用修改数据函数
new SqlDA().update(data);
}
}

修改数据的函数

//修改数据的方法
public void update (SqlData data)
{
//打开连接,拼接命令
_con.Open();
_cmd = _con.CreateCommand();
_cmd.CommandText = "update users set name=@name,pwd=@pwd where code=@code";
_cmd.Parameters.Add("@name",data.Name );
_cmd.Parameters.Add("@pwd", data.Pwd);
_cmd.Parameters.Add("@code", data.Code);
//执行命令,关闭连接
_cmd.ExecuteNonQuery();
_con.Close(); }

将用户名、密码输入后,点击“修改”,在主窗口中点击“查询”,可以看到数据已修改

㈢删除数据

//删除数据的方法
public void delete(SqlData data)
{
//打开连接,拼接命令
_con.Open();
_cmd = _con.CreateCommand();
_cmd.CommandText = "delete from users where code=@code";
_cmd.Parameters.Add("@code", data.Code);
//执行命令,关闭连接
_cmd.ExecuteNonQuery();
_con.Close(); }

C#通过窗体应用程序操作数据库(增删改查)的更多相关文章

  1. 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查

    一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...

  2. Django-Model操作数据库(增删改查、连表结构)

    一.数据库操作 1.创建model表         基本结构 1 2 3 4 5 6 from django.db import models     class userinfo(models.M ...

  3. phpcms 操作数据库 增删改查

    数据库的其他类继承的都是libs/class/model.class.php 这里面有写好的操作数据库的常用方法 1.增 insert($data, $return_insert_id = false ...

  4. MongoDB学习day04--NodeJs操作数据库增删改查

    一.在Nodejs中使用Mongodb Nodejs需要引入的包 npm install mongodb --save -dev 或者使用镜像 cnpm install mongodb --save ...

  5. java操作数据库增删改查的小工具1--TxQueryRunner

    在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样 ...

  6. JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能

    一.分页工具类 package blank.util;import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; ...

  7. java操作数据库增删改查的小工具2--TxQueryRunner

    当涉及到多表查询时,如数据库中有两张表分别为t_person和t_address,表结构如下: 其中t_person的外键为t-address的主键aid, 新建两个javaBean类,Person ...

  8. 前端web通过flask操作数据库-增删改查

    后端python代码: #coding:utf8 from flask import Flask,request,render_template import pymysql as mysql imp ...

  9. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  10. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

随机推荐

  1. 开源Git代码托管平台

    开源Git代码托管平台主要参考有以下4个: 1.GitHub 很多开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费.GitHub地址:https://github ...

  2. Vulkan SDK 之 Depth Buffer

    深度缓冲是可选的,比如渲染一个3D的立方体的时候,就需要用到深度缓冲.Swapchain就算有多个images,此时深度缓冲区也只需要一个.vkCreateSwapchainKHR 会创建所有需要的i ...

  3. 63.Python中contains和icontains

    1. contains: 进行大小写敏感的判断,某个字符串是否包含在指定的字段中,这个判断条件使用大小写敏感进行判断,因此在被翻译成"SQL"语句的时候,会使用"like ...

  4. 实验吧web-中-忘记密码了

    打开网页,查看源代码,好像发现了管理员邮箱而且还是用vim编辑的. 我们提交一下这个邮箱,虽然提交成功了,但好像并没什么用. 我们随便提交一个,会弹出 看来好像还有个step2呢,我们查看源代码(在这 ...

  5. 技术沙龙|京东云DevOps自动化运维技术实践

    自动化测试体系不完善.缺少自助式的持续交付平台.系统间耦合度高服务拆分难度大.成熟的DevOps工程师稀缺,缺少敏捷文化--这些都是DevOps 在落地过程中,或多或少会碰到的问题,DevOps发展任 ...

  6. 10 Json(unity3D)

    //写入json文档注意事项: 1.在Asset下要有一个StreamingAssets文件夹 2.在文件夹内,有一个已创建好的json空文档 3.引入命名空间 using Litjson; usin ...

  7. 哈希表hashTable的Java设计

    1:哈希表的概念 2:设计原理 3:哈希表的Java设计

  8. Java线程——线程之间的数据共享

      在 Java 传统线程机制中的共享数据方式,大致可以简单分两种情况: ➢ 多个线程行为一致,共同操作一个数据源.也就是每个线程执行的代码相同,可以使用同一个 Runnable 对象,这个 Runn ...

  9. 吴裕雄--天生自然MySQL学习笔记:MySQL 索引

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...

  10. css常见符号

    * 通配符使用星号*表示,意思是“所有的” 比如:* { color : red; } 这里就把所有元素的字体设置为红色 缺点: 不过,由于*会匹配所有的元素,这样会影响网页渲染的时间 解决: res ...