关闭

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

标签: c#SQLado.net
595人阅读 评论(0) 收藏 举报
分类:

        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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:150195次
    • 积分:4019
    • 等级:
    • 排名:第8175名
    • 原创:258篇
    • 转载:3篇
    • 译文:0篇
    • 评论:31条
    最新评论