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的使用的更多相关文章

  1. C#使用DataSet Datatable更新数据库的三种实现方法

    本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...

  2. ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)

    通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...

  3. 手写DataSet,DataTable

    一:DataSet DataSet ds = new DataSet();//创建DataSet DataTable dt = new DataTable();//创建一个DataTalbe dt.C ...

  4. DataSet DataTable操作

    DataSet ds = new DataSet();            DataTable dt = new DataTable("OrderList");          ...

  5. [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)

    点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预 ...

  6. DataSet,DataTable,DataColumn,DataRow的常用操作

    DataSet 这个玩意没什么好讲的,当ado.net查询出有多张表集合的数据返回时,这个时候就会使用到DataSet. DataTable //表之间直接赋值 dt2=dt1; 两者指向同一内存空间 ...

  7. 【C#-批量插入数据到数据库】DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.WriteToServer(Datatable)

    第一种方法:使用SqlCommand.EcecuteNonQurery()  效率最慢 第二种方法:使用SqlDataAdapter.Update(DataTable)   效率次之 第三种方法:使用 ...

  8. DataSet,DataTable排序(转载)

    DataSet,DataTable排序   关于对已经绑定的DataSet的排序的问题: DataSet ds=new DataSet();DataView dv=new DataView();dv. ...

  9. 使用DataSet Datatable 更新数据库的三种方式

    1:自动生成命令的条件 CommandBuilder 方法a)动态指定 SelectCommand 属性b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteC ...

随机推荐

  1. 牛顿迭代法(Newton's method)

    关键词:牛顿法.牛顿迭代法.牛顿切线法.牛顿-拉弗森方法 参考:牛顿迭代法-百度百科.牛顿切线法-百度文库数学学院.牛顿切线法数值分析.非线性方程(组)的数值解法.Latex入门 https://bl ...

  2. Sql语句里的递归查询 SqlServer2005和Oracle 两个版本

    以前使用Oracle,觉得它的递归查询很好用,就研究了一下SqlServer,发现它也支持在Sql里递归查询举例说明:SqlServer2005版本的Sql如下:比如一个表,有id和pId字段,id是 ...

  3. 第3章—高级装配—配置profile bean

    配置profile bean 3.1.@profile注解是spring提供的一个用来标明当前运行环境的注解. 我们正常开发的过程中经常遇到的问题是,开发环境是一套环境,qa测试是一套环境,线上部署又 ...

  4. 各种height/width总结

    CSS盒模型是比较复杂的,尤其是当页面中有滚动条时,仅仅通过css来操作高度宽度是不够的,幸运的是Javascript提供了不少这样的接口.Javascript中clientHeight / clie ...

  5. 浅谈js中的垃圾两种回收机制

    一.标记清除 标记清除的主要思想是先建立各个对象的关联,然后从根节点出发,使用广度优先搜索依次标记所有对象,那些不能被标记的对象就应该作为垃圾回收. 这种方式的主要缺点就是如果某些对象被清理后,内存是 ...

  6. Chapter 14. Blocks and Statements

    14.5. Statements There are many kinds of statements in the Java programming language. Most correspon ...

  7. Java代码解决ElasticSearch的Result window is too large问题

    调用ElasticSearch做分页查询时报错: QueryPhaseExecutionException[Result window is too large, from + size must b ...

  8. Idea中找不到xml配置文件问题研究以及classpath设置(转载)

    问题: 在用Idea建立一个Java Application工程的时候,应用了Spring框架,可是Spring的xml配置文件找不到.检查表明不是代码的问题.费了我好长时间才解决.   出现问题,我 ...

  9. Wahrscheinlichkeitstheorie und mathematische Statistik

    Übliches Wort 正态分布:Die Normalverteilung 条件概率:Die Bedingte Wahrscheinlichkeit 排列:Die Permutation 组合:D ...

  10. 十一:image 图片

    属性名 类型 默认值 说明 src String   图片资源地址 mode String 'scaleToFill' 图片裁剪.缩放的模式 binderror HandleEvent   当错误发生 ...