开发者社区> 郭璞> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ADO.NET操作数据库

简介: 在数据库操作中,获取数据并绑定到GridView上一般来说是我们的目标,下面是经常使用到的一种方式,利用DataAdapter和DataSet,DataTable的配合来实现。 先来试试DataAdapter与DataTable。
+关注继续查看

在数据库操作中,获取数据并绑定到GridView上一般来说是我们的目标,下面是经常使用到的一种方式,利用DataAdapter和DataSet,DataTable的配合来实现。


先来试试DataAdapter与DataTable。

  • 首先获取一个数据库连接对象
  • 再要声明一个SqlCommand对象
  • 申请一个DataAdapter对象和DataTable对象
  • 然后开始进行数据的绑定工作
String connstr = "Data Source=.\\SQLEXPRESS;Initial Catalog=ForDataAdapter;Integrated Security=True";
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connstr);
                conn.Open();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            if (conn.State==ConnectionState.Open)
            {
                Console.WriteLine("数据库连接成功!");
            }
            DataTable dataTable = new DataTable("Student");
            dataTable.Clear();
            String SQLINSERT = "INSERT into Student values('"+textBox_Name.Text.Trim().ToString()+"','"
                +textBox_Class.Text.Trim().ToString()+"','"+textBox_Age.Text.Trim()+"')";
            SqlCommand cmd = new SqlCommand(SQLINSERT, conn);
            cmd.ExecuteNonQuery();
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = cmd;
            adapter.Fill(dataTable);
            dataTable.Clear();
            //显示消息
            SqlDataAdapter adaterSelect = new SqlDataAdapter("Select * from Student", conn);
            adaterSelect.Fill(dataTable);
            dataGridView1.DataSource = dataTable.DefaultView;

注意其中,适配器adapter来填充了datatable类的实例(adapter.Fill(dataTable),作用就是添加或刷新行以与数据源中的行进行匹配


DataAdapter与DataSet进行配合的使用:

  • 首先是建立一个数据库连接对象,并打开它
  • 然后是创建一个适配器,当然方式不止一种(还可以通过SqlCommand方式)
  • 声明DataSet,然后把适配器里面的内容填充到数据集中
  • 最后只需要把数据集作为GridView的数据源就可以了
String connstr = "Data Source=.\\SQLEXPRESS;Initial Catalog=ForDataAdapter;Integrated Security=True";
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connstr);
                conn.Open();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            if (conn .State==ConnectionState.Open)
            {
                Console.WriteLine("数据库连接成功!");
            }
            DataTable dataTable = new DataTable("Student");
            dataTable.Clear();
            String SQLSELECT = "SELECT * from Student order by Name";
            SqlDataAdapter adapter = new SqlDataAdapter(SQLSELECT, conn);
            DataSet dataset = new DataSet();
            adapter.Fill(dataset, "Student");
            dataGridView1.DataSource = dataset;
            dataGridView1.DataMember = "Student";

接下来一起看一看DataReader ,DataReader类是一个简单的数据集,用于从数据源中检索只读数据集,常用于检索大量的数据。DataReader类只允许只读,顺向的方式查看其中所存储的数据,提供一个非常有效率的数据查看模式,同时,他还是一种非常节省资源的数据对象!


但是需要注意的是,DataReader是一个比较“强硬”方式,它会独占连接对象,所以每次打开一个新的对象的时候都必须关闭前一个DataReader对象,否则将会收到其产生的异常。
使用步骤:

  • 创建一个数据库连接对象,并记得打开
  • 创建SqlCommand类的实例,然后通过它得到SqlDataReader对象
  • 读取SqlDataReader实例的内容即可
private void button_AddToLB_Click(object sender, EventArgs e)
        {
            String connstr = "Data Source=.\\SQLEXPRESS;Initial Catalog=ForDataAdapter;Integrated Security=True";
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connstr);
                conn.Open();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            if (conn.State == ConnectionState.Open)
            {
                Console.WriteLine("数据库连接成功!");
            }
            SqlCommand cmd = new SqlCommand("Select * from Student", conn);
            SqlDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    listBox1.Items.Add(reader[0].ToString() + "\t" + reader[1].ToString() + "\t" + reader[2].ToString() + "\n");
                }
            }
            reader.Close();
        }


查阅资料得到:位于System.Data命名空间下的DataSet类是支持ADO.NET的断开式,分布式数据方案的核心对象,他是数据的内存主流的表示形式,无论数据源是什么,他都会提供一致的关系编程模型。另外,他还用于多种不同的数据源。例如用于XML数据或用于管理应用程序本地的数据。DataSet类表示包括相关表,约束和标间关系在内的整个数据集。


总结:
在使用DateSet时应该注意,DataSet表示的可以不只是一个标的内容,但是却是以顺序方式来存储数据源信息的,所以在使用的时候一定要分清即将使用的是哪一个数据源对应的内容。
如下:dataGridVIew.DataSource=dataSet.Table[0].DefaultView;
其中的索引便可以具体到对应的数据集。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ADO.NET 连接数据库方式
使用Command和DataReader对象:
0 0
C#_使用ADO.NET实体模型与数据库进行快速连接
C#_使用ADO.NET实体模型与数据库进行快速连接,实现增、删、改、查操作
0 0
ADO.NET结合C#常见的数据库操作(二)
  现在接着上次的来讲SqlDataAdapter的相关应用。   SqlDataAdapter表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。 此类不能被继承。
589 0
ADO.NET结合C#常见的数据库操作(一)
  ADO.NET使我们在VS开发中用到最多的数据库访问接口,这里我不见它的原理和其它,直接说它的几种常见的用法。 声明:在ADO.NET全部讲完之后,会将整个源代码贴出,将单个的时候只贴出涉及到的代码。
662 0
ADO.NET数据库实例教程
ADO.NET数据库实例教程 【字体:大 中 小】 C#技术站opent.cn 编辑:浪淘沙 文章来源:互联网 更新时间:2009-04-16 浏览:43 次     ADO.NET数据库编程比较复杂,名目繁多的类、对象、属性、方法让每一个编程者都感觉恼火。本文旨在介绍ASP.NET Beta2数据库编程的主要内容,帮助编程者最快的了解ADO.NET数据库编程的精髓。   
1462 0
+关注
郭璞
一切就交给时间,它会给我答案。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载