说明:通过DataAdapter或者dataset连接数据库,实现对数据增删改查操作.

以前写过一篇步步为营-23-通过GridView实现增删改

1:SqlDataAdapter  DataTable实现

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace DataView
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
} private void MainForm_Load(object sender, EventArgs e)
{
//01-创建配置文件 添加引用
//02-设置连接字符串]
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//03 创建连接字符串
using (SqlConnection conn = new SqlConnection(connStr))
{
//04-创建数据库操作脚本
string sqlStr = "select EmpId, Pwd, StuName, StuAge, Delflag, ClassNo from UserInfo";
using (SqlDataAdapter sda = new SqlDataAdapter(sqlStr,conn))
{
//05-隆重介绍一下Adapter-适配器
//05-01判断sqlConnection是否初始化
//05-02初始化Select Command对象
//05-03 通过cmd对象执行返回SQLdataReader对象
//05-04 读取数据,填充到datatreader上
DataTable dt = new DataTable();
sda.Fill(dt);
//05-创建实体模型,对数据进行封装
List<UserINfo> userList = new List<UserINfo>();
foreach (DataRow dataRow in dt.Rows)
{
//封装数据
userList.Add(new UserINfo() { EmpId = int.Parse(dataRow["EmpId"].ToString()),
StuName = dataRow["StuName"].ToString(),
StuAge = int.Parse(dataRow["StuAge"].ToString())
}); }
//06-设置数据源
this.dataGridView1.DataSource = userList; }
} }
}
}

2:运行效果

3SqlDataAdapter  DataSet实现

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace DataView
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
} private void MainForm_Load(object sender, EventArgs e)
{
//01-创建配置文件 添加引用
//02-设置连接字符串]
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//03 创建连接字符串
using (SqlConnection conn = new SqlConnection(connStr))
{
//04-创建数据库操作脚本
string sqlStr = @"
select ClassId, ClassName from ClassInfo;
select EmpId, Pwd, StuName, StuAge, Delflag, ClassNo from UserInfo";
using (SqlDataAdapter sda = new SqlDataAdapter(sqlStr,conn))
{
//05-隆重介绍一下Adapter-适配器
//05-01判断sqlConnection是否初始化
//05-02初始化Select Command对象
//05-03 通过cmd对象执行返回SQLdataReader对象
//05-04 读取数据,填充到datatreader上 DataSet ds = new DataSet();
sda.Fill(ds);
List<UserINfo> userList = new List<UserINfo>();
foreach (DataRow dataRow in ds.Tables[].Rows)
{
//封装数据
userList.Add(new UserINfo()
{
EmpId = int.Parse(dataRow["EmpId"].ToString()),
StuName = dataRow["StuName"].ToString(),
StuAge = int.Parse(dataRow["StuAge"].ToString())
}); }
this.dataGridView1.DataSource = userList;
}
} }
}
}

4 实现增删查改--通过SqlCommandBuilder

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace DataView
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{
//01-创建配置文件 添加引用
//02-设置连接字符串]
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//03 创建连接字符串
using (SqlConnection conn = new SqlConnection(connStr))
{
//04-创建数据库操作脚本
string sqlStr = @"select EmpId, Pwd, StuName, StuAge, Delflag, ClassNo from UserInfo";
using (SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn))
{ DataTable dt =new DataTable();
sda.Fill(dt); this.dataGridView1.DataSource = dt;
}
} } private void btnSave_Click(object sender, EventArgs e)
{
//把DataGridView的修改的数据保存到数据库中去。
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //修改的sql一定要跟 查询的sql脚本一致。
string sqlStr = @"select EmpId, Pwd, StuName, StuAge, Delflag, ClassNo from UserInfo"; using (SqlDataAdapter adapter = new SqlDataAdapter(sqlStr, connStr))
{
//01-拿到修改之后的datatable对象
DataTable dt = this.dataGridView1.DataSource as DataTable;
//把修改完的内存表 映射到数据库中对应的表
//SQLCommandBuilder帮助我们Adapter生成相关的command
using (SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter))
{
adapter.Update(dt);
}
}
}
}
}

5 实现增删查改--手动写

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace DataView
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{
//01-创建配置文件 添加引用
//02-设置连接字符串]
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//03 创建连接字符串
using (SqlConnection conn = new SqlConnection(connStr))
{
//04-创建数据库操作脚本
string sqlStr = @"select EmpId, Pwd, StuName, StuAge, Delflag, ClassNo from UserInfo";
using (SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn))
{ DataTable dt =new DataTable();
sda.Fill(dt); this.dataGridView1.DataSource = dt;
}
} } private void btnSave_Click(object sender, EventArgs e)
{
//把DataGridView的修改的数据保存到数据库中去。
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //修改的sql一定要跟 查询的sql脚本一致。
string sqlStr = @"select EmpId, Pwd, StuName, StuAge, Delflag, ClassNo from UserInfo"; using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(sqlStr, conn))
{
//adapter.in
//拿到修改完了之后的DataTable对象
DataTable dt = this.dataGridView1.DataSource as DataTable; // #region 手写 删除 SqlCommand
//删除的Command
adapter.DeleteCommand = conn.CreateCommand();
adapter.DeleteCommand.CommandText = "delete from UserInfo where EmpId=@EmpId"; //执行删除操作,把 EmpId列的值 给@EmpId参数用。
adapter.DeleteCommand.Parameters.Add("@EmpId", SqlDbType.Int, , "EmpId"); #endregion #region 手写 修改的 SqlCommand
adapter.UpdateCommand = conn.CreateCommand();
adapter.UpdateCommand.CommandText = "update UserInfo set Pwd=@Pwd, StuName=@StuName,StuAge=@StuAge ,Delflag=@Delflag, ClassNo=@ClassNo where EmpId=@EmpId"; //执行更新操作
adapter.UpdateCommand.Parameters.Add("@EmpId", SqlDbType.Int, , "EmpId");
adapter.UpdateCommand.Parameters.Add("@Pwd", SqlDbType.NVarChar, , "Pwd");
adapter.UpdateCommand.Parameters.Add("@StuName", SqlDbType.NVarChar, , "StuName");
adapter.UpdateCommand.Parameters.Add("@StuAge", SqlDbType.Int, , "StuAge");
adapter.UpdateCommand.Parameters.Add("@Delflag", SqlDbType.Int, , "Delflag");
adapter.UpdateCommand.Parameters.Add("@ClassNo", SqlDbType.Int, , "ClassNo");
#endregion #region 手写 新增 SqlCommand
adapter.InsertCommand = conn.CreateCommand();
adapter.InsertCommand.CommandText = "INSERT INTO UserInfo (Pwd,StuName,StuAge,Delflag,ClassNo) VALUES (@Pwd,@StuName, @stuAge, @Delflag,@ClassNo)"; //执行更新操作
adapter.InsertCommand.Parameters.Add("@Pwd", SqlDbType.NVarChar, , "Pwd");
adapter.InsertCommand.Parameters.Add("@StuName", SqlDbType.NVarChar, , "StuName");
adapter.InsertCommand.Parameters.Add("@StuAge", SqlDbType.Int, , "StuAge");
adapter.InsertCommand.Parameters.Add("@Delflag", SqlDbType.Int, , "Delflag");
adapter.InsertCommand.Parameters.Add("@ClassNo", SqlDbType.Int, , "ClassNo");
#endregion adapter.Update(dt); #region 使用命令生成器 //找到表中,添加数据,生成一条insert ,Insert Command ExcuteNonQuery到数据库中。
//如果修改的:update
//delet... ////把修改完的内存表dt 变化映射到数据库中的表的变化。
////SqlCommandBuilder帮助我们的Adapter生成相关的CRUD SqlCommand
//using (SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter))
//{
// adapter.Update(dt);
//} #endregion
}
}//end using Conn
MessageBox.Show("保存成功");
}
}
}

手写的

步步为营-42-通过DataAdapter实现增删查改的更多相关文章

  1. java实现简单的数据库的增删查改,并布局交互界面

        一.系统简介 1.1.简介  本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...

  2. C# SQLite 创建数据库的方法增删查改语法和命令

    SQLite介绍 SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQL92标准. SQLite数据库官方主页 ...

  3. ADO.NET教程(2)实现增删查改

    声明一个类,在类中实现增删查改的方法 public class AdoNet { //声明连接字符串 public string Sqlstr = "data source={0};data ...

  4. 在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  5. 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  6. 3.EF 6.0 Code-First实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-entity-framework-5-0-code- ...

  7. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

  8. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  9. jdbc的实例应用:增删查改实现

    //在jdbc中进行增删查改 //查看所有 public static void findAll() { String url = "jdbc:mysql://localhost:3306/ ...

随机推荐

  1. centos7下安装redis的步骤

    原贴地址:https://www.cnblogs.com/zuidongfeng/p/8032505.html 我linux服务器上是这样启动的: cd /tool/redis/redis-3.2.8 ...

  2. Prezento – 轻量、简单的 jQuery 幻灯片插件

    Prezento 是一个超级简单的 jQuery 幻灯片插件.可以让你网页以新颖的交互方式呈现.另外,Prezento 支持响应式设计,配置项也很灵活,可以根据你需要的效果配置. 您可能感兴趣的相关文 ...

  3. Javaweb学习笔记——(一)——————进入html

    1.html的简介 *什么是html? -HyperText Markup Language:超文本标记语言,网页语言 **超文本:超出文本的范畴,使用html可以轻松实现这些操作 **标记:html ...

  4. Unity3d跨平台原理

    知乎的一个提问:unity3d跨平台原理 一些资料: IL IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe ...

  5. u-boot移植(十二)---代码修改---支持DM9000网卡

    一.准备工作 1.1 原理图 CONFIG_DM9000_BASE 片选信号是接在nGCS4引脚,若要确定网卡的基地址,则要根据片选信号的接口去确定. 在三星2440的DATASHEET中memory ...

  6. Postfix 邮件服务 - DNS服务

    DNS 服务 (系统需要配置静态 IP 地址) yum install bing* -y 一.配置 NDS 域名解析: 直接添加以下内容: [root@mail ~]# cat /etc/named. ...

  7. PyCharm的调试

    1.设置断点 2.debug模式运行    F8      下一行代码 查看当前位置所有局部变量:print(locals()) 查看全局变量:                      print( ...

  8. (原创)高仿360云盘android端的UI实现

    前些日子几大互联网巨头展开了一轮网盘空间大战.一下子从G级别提高到了T级别.以后谁的空间没有1T估计都不好意思开口了~~~ 试用了一下360云盘的客户端,比较小清新(不是给360打广告~~~).刚好U ...

  9. $Miller Rabin$总结

    \(Miller Rabin\)总结: 这是一个很高效的判断质数的方法,可以在用\(O(logn)\) 的复杂度快速判断一个数是否是质数.它运用了费马小定理和二次探测定理这两个筛质数效率极高的方法. ...

  10. python 多线程中子线程和主线程相互通信

    主线程开启多个线程去干活,每个线程需要完成的时间不同,干完活以后都要通知给主线程,下面代码说明该应用: 代码块: import threading import queue import time i ...