sqldataAdapter/dataset/datatable的使用
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//把cities表中的数据加载到窗体的datagridview
string connString = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
using(SqlConnection sqlconn=new SqlConnection(connString))
{
string selectstring = @"select id, cityid, city, provinceid from cities;select * from provinces"; #region 单张表
//创建一个适配器类
//using(SqlDataAdapter sqladapter=new SqlDataAdapter(selectstring,sqlconn))
//{ // //此时adapter已经连接到了一个表
// DataTable dataTable = new DataTable();
// //将关联表的数据填充到dataTable
// //sqladapter会自动打开数据库连接,并执行sql脚本
// sqladapter.Fill(dataTable);
// //this.dataGridView1.DataSource = dataTable;
// List<cities> mycitylist = new List<cities>(); // //类定义时字段{get;set;}不写显示不出来
// foreach(DataRow datarow in dataTable.Rows)
// {
// Console.WriteLine(datarow["id"]+" "+datarow[1]);
// //把每一行数据封装成city类
// mycitylist.Add(new cities(){
// id=int.Parse(datarow["id"].ToString()),
// cityid=int.Parse(datarow["cityid"].ToString()),
// city=datarow["city"].ToString(),
// provinceid = int.Parse(datarow["provinceid"].ToString())
// });
// }
// //把datatable的数据转储成List<city>类型
// this.dataGridView1.DataSource = mycitylist;
#endregion #region 多张表
using(SqlDataAdapter sqlDataAdapter =new SqlDataAdapter(selectstring,sqlconn))
{
DataSet dataset=new DataSet();
sqlDataAdapter.Fill(dataset);
this.dataGridView1.DataSource = dataset.Tables[];
}
#endregion } } }
增删改查
private void button1_Click(object sender, EventArgs e)
{
//把dataGridView修改的数据保存到数据库中
string connString = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
string selectstring = @"select id, cityid, city, provinceid from cities;select * from provinces";
using(SqlDataAdapter dataAdapter=new SqlDataAdapter(selectstring,connString))
{
//拿到修改完了之后的datatable
DataTable dt = this.dataGridView1.DataSource as DataTable;
//修改后dt的变化映射到数据库中对应表格的变化
//帮助dataAdapter生成相关的CRUD 的SqlCommand
using (SqlCommandBuilder sqlcomBulider = new SqlCommandBuilder(dataAdapter))
{
dataAdapter.Update(dt);
}
}
MessageBox.Show("保存成功");
手动增删改查
public static SqlDataAdapter CreateCustomerAdapter(
SqlConnection connection)
{
SqlDataAdapter adapter = new SqlDataAdapter(); // Create the SelectCommand.
SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
"WHERE Country = @Country AND City = @City", connection); // Add the parameters for the SelectCommand.
command.Parameters.Add("@Country", SqlDbType.NVarChar, );
command.Parameters.Add("@City", SqlDbType.NVarChar, ); adapter.SelectCommand = command; // Create the InsertCommand.
command = new SqlCommand(
"INSERT INTO Customers (CustomerID, CompanyName) " +
"VALUES (@CustomerID, @CompanyName)", connection); // Add the parameters for the InsertCommand.
command.Parameters.Add("@CustomerID", SqlDbType.NChar, , "CustomerID");
command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, , "CompanyName"); adapter.InsertCommand = command; // Create the UpdateCommand.
command = new SqlCommand(
"UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
"WHERE CustomerID = @oldCustomerID", connection); // Add the parameters for the UpdateCommand.
command.Parameters.Add("@CustomerID", SqlDbType.NChar, , "CustomerID");
command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, , "CompanyName");
SqlParameter parameter = command.Parameters.Add(
"@oldCustomerID", SqlDbType.NChar, , "CustomerID");
parameter.SourceVersion = DataRowVersion.Original; adapter.UpdateCommand = command; // Create the DeleteCommand.
command = new SqlCommand(
"DELETE FROM Customers WHERE CustomerID = @CustomerID", connection); // Add the parameters for the DeleteCommand.
parameter = command.Parameters.Add(
"@CustomerID", SqlDbType.NChar, , "CustomerID");
parameter.SourceVersion = DataRowVersion.Original; adapter.DeleteCommand = command; return adapter;
}
sqldataAdapter/dataset/datatable的使用的更多相关文章
- C#使用DataSet Datatable更新数据库的三种实现方法
本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...
- ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)
通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...
- 手写DataSet,DataTable
一:DataSet DataSet ds = new DataSet();//创建DataSet DataTable dt = new DataTable();//创建一个DataTalbe dt.C ...
- DataSet DataTable操作
DataSet ds = new DataSet(); DataTable dt = new DataTable("OrderList"); ...
- [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)
点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预 ...
- DataSet,DataTable,DataColumn,DataRow的常用操作
DataSet 这个玩意没什么好讲的,当ado.net查询出有多张表集合的数据返回时,这个时候就会使用到DataSet. DataTable //表之间直接赋值 dt2=dt1; 两者指向同一内存空间 ...
- 【C#-批量插入数据到数据库】DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.WriteToServer(Datatable)
第一种方法:使用SqlCommand.EcecuteNonQurery() 效率最慢 第二种方法:使用SqlDataAdapter.Update(DataTable) 效率次之 第三种方法:使用 ...
- DataSet,DataTable排序(转载)
DataSet,DataTable排序 关于对已经绑定的DataSet的排序的问题: DataSet ds=new DataSet();DataView dv=new DataView();dv. ...
- 使用DataSet Datatable 更新数据库的三种方式
1:自动生成命令的条件 CommandBuilder 方法a)动态指定 SelectCommand 属性b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteC ...
随机推荐
- Mac 10.12安装Google浏览器
说明:先安装旧版本后续再升级,主要是资源难找. 下载: (链接: https://pan.baidu.com/s/1eROfQyY 密码: n6ij)
- python 脚本备份 mysql 数据库到 OSS
脚本如下: #!/usr/bin/python ########################################################### ################ ...
- Can't find the 'libpq-fe.h header when trying to install pg gem
https://stackoverflow.com/questions/6040583/cant-find-the-libpq-fe-h-header-when-trying-to-install-p ...
- How can I set ccshared=-fPIC while executing ./configure?
解决方式如下: make clean ./configure CFLAGS=-fPIC CXXFLAGS=-fPIC
- kd树 C++实现
参考:百科kd-tree /* * kdtree.h * * Created on: Mar 3, 2017 * Author: wxquare */ #ifndef KDTREE_H_ #defin ...
- Elasticsearch集群和索引常用命令
https://www.cnblogs.com/pilihaotian/p/5846173.html REST API用途 ES提供了很多全面的API,大致可以分成如下几种: 1 检查集群.节点.索引 ...
- Mozilla新特性只支持https网站,再次推动SSL证书普及
Mozilla的官方博客2015.4.30正式宣布了淘汰HTTP的方案. 其中包括:设定一个日期,所有的新特性将只提供给HTTPS网站:HTTP网站将逐步被禁止访问浏览器功能,尤其是那些与用户安全和隐 ...
- [PY3]——函数——生成器(yield关键字)
函数—生成器篇 1. 认识和区分可迭代or生成器 1.1 可迭代对象 当你建立了一个列表,你可以逐项地读取这个列表,这叫做一个可迭代对象 当你使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- C# 之程序退出的方法
1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: 2.Application.Exit(); 强制所有消息中 ...