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 ...
随机推荐
- (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法 ...
- yii学习记录-gii配置
这篇博文中你将了解到以下内容 YiiDemo配置文件 Yii代码生成器 修改PHP执行环境变量 参考 Yii 是一个基于组件.纯OOP的.用于开发大型 Web 应用的高性能PHP框架.它将Web编程中 ...
- Struts2方法调用的三种方式(有新的!调用方法的说明)
在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="heroAction" class="com.ABC ...
- 【Qt开发】QTime类
QTime类为用户提供一系列时间的函数,封装的很全面,几乎满足了各种时间的需求. 常用方法介绍 1.QTime addMSecs(int ms) const 当前时间增加毫秒,ms可为负 2.QTim ...
- R语言中apply函数
前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言 ...
- Objekt Orientierte Programmierung C++
1.Funtion Overloading C++ erlaubt,dass einige Funktion gleiches Names deklariert wird.Der Formale Pa ...
- 问题集录--TensorFlow深度学习
TensorFlow深度学习框架 Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习框架TensorFlow. 与Caffe ...
- Solr环境配置
1.准备 第一步下载JDK1.8.0_131Tomcat9.0.7 注意版本的兼容性 第二歩下载solr,目前使用的是solr-7.3.0 2.安装 1. 将 solr 压缩包解压,并将solr- ...
- js原型及原型链解析
js原型.原型链 这几天闲了看了下js的原型,以下内容为个人理解,如有错误,尽请指正. 首先,明确一点:js中的对象分为普通对象和函数对象,一般我们自定义的可以被new的函数称作函数对象,另外js内置 ...
- DIRECTORY_SEPARATOR 目录分隔符 php内置变量
转自http://www.cnblogs.com/timelesszhuang/p/3814878.html 在windows我们习惯性的使用“\”作为文件分隔符,但是在linux上系统不认识这个标识 ...