ADO.NET两种连接模型简介及增删改查实例

来源:互联网 发布:网络爬虫工具下载 编辑:程序博客网 时间:2024/06/18 05:29

        ADO.NET支持两种访问数据的模型:无连接模型和连接模型

        无连接模型:将数据下载到客户机器上,并在客户机上将数据封装到内存中,然后可以像访问本地关系数据库一样访问内存中的数据(例如DataSet)。

        连接模型:依赖于逐记录的访问,这种访问要求打开并保持与数据源的连接。

        Connection对象:负责与数据的连接

        Command对象:执行SQL语句,有三个常用方法:ExecuteNonQuery、ExecuteReader、ExecuteScalar

                                  ExecuteNonQuery:用于增删改,返回受影响的行数

                                  ExecuteReader:执行查询,返回一个SqlDataReader对象

                                  ExecuteScalar:执行查询,并返回查询所返回首行首列

        SqlDataReader对象:将查询数据直接送到目标位置,不经过任何的中转,执行速度快。


查询实例:

private void btnTest_Click(object sender, EventArgs e){    try    {        string serverName = "192.168.0.171";        string dataBaseName = "MyDB";        string id = "sa";        string pwd = "123456";        //string str = "server = " + serverName + ";" + "database = " + dataBase + ";" + "uid = " + id + ";" + "pwd = " + pwd;        string str = string.Format("server = {0};database = {1};uid = {2};pwd = {3}", serverName, dataBaseName, id, pwd);        using (SqlConnection con = new SqlConnection(str))        {            //拼接sql语句            string sql = "";            //准备执行sql语句的对象            using (SqlCommand cmd = new SqlCommand(sql, con))            {                if (con.State == System.Data.ConnectionState.Closed)                {                    con.Open();//打开数据库                    //以下若不使用using可以通过下句代码实现cmd和con的自动释放                    //cmd.ExecuteNonQuery(System.Data.CommandBehavior.CloseConnection)                    using (SqlDataReader reader = cmd.ExecuteReader())//准备读数据                    {                        //判断是否有数据(有没有行)                        if (reader.HasRows)                        {                            //读取每一行                            while (reader.Read())                            {                            }                        }                    }                }            }        }    }    catch (Exception)    {        MessageBox.Show("数据库操作失败!!!");    }}

插入/更新/删除实例:仅sql语句不同,其它格式一样

private void btnTest_Click(object sender, EventArgs e){    try    {        string serverName = "192.168.0.171";        string dataBaseName = "MyDB";        string id = "sa";        string pwd = "123456";        //string str = "server = " + serverName + ";" + "database = " + dataBase + ";" + "uid = " + id + ";" + "pwd = " + pwd;        string str = string.Format("server = {0};database = {1};uid = {2};pwd = {3}", serverName, dataBaseName, id, pwd);        using (SqlConnection con = new SqlConnection(str))        {            //拼接sql语句            string sql = string.Format("insert into DeskInfo(name,num,desc) values('{0}','{1}','{2}')", txtName.Text, txtNum.Text, txtDesc.Text);            //准备执行sql语句的对象            using (SqlCommand cmd = new SqlCommand(sql, con))            {                if (con.State== System.Data.ConnectionState.Closed)                {                    con.Open();//打开数据库                    if (cmd.ExecuteNonQuery())                    {                        MessageBox.Show("插入数据库失败");                    }                }            }        }    }    catch (Exception)    {        MessageBox.Show("数据库操作失败!!!");    }}

临时数据库DataSet

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;namespace _04临时数据库DataSet{    class Program    {        static void Main(string[] args)        {            //创建数据库            DataSet ds = new DataSet("mydatabase");            //创建表            DataTable dt = new DataTable("student");            //创建列            DataColumn dc1 = new DataColumn("stuId", typeof(int));//第一个列            DataColumn dc2 = new DataColumn("stuName", typeof(string));//第二列            //把列添加到表中            dt.Columns.Add(dc1);            dt.Columns.Add(dc2);            //添加数据            dt.Rows.Add(1, "nll");            dt.Rows.Add(2,"ml");            ds.Tables.Add(dt);//把表放到数据库中            foreach (DataTable table in ds.Tables)            {                foreach (DataRow row in table.Rows)                {                    Console.WriteLine("{0},=========={1}",row[0],row[1]);                }            }            Console.ReadKey();        }    }}

0 0
原创粉丝点击