1. ADO.NET重要的类
  2. 在.NET访问MySql数据库时的几点经验!
    string connstr=Setting.Instance().GetConnectionString("MySql");
    MySqlConnection conn =new MySqlConnection(connstr);
    conn.Open();
    string query = "insert into myfirst(Id,Name) values(?Id,?Name)";
    MySqlCommand cmd = new MySqlCommand(query, conn);
    MySqlParameter para1=new MySqlParameter("?Id",DbType.Int32); //这里要注意必须要用?号
    MySqlParameter para2=new MySqlParameter("?Name",DbType.String);//这里要注意必须要用?号
    para1.Value=;
    para2.Value="ddd";
    cmd.Parameters.Add(para1);
    cmd.Parameters.Add(para2);
    cmd.ExecuteNonQuery();
  3. 设计应用程序时,要考虑应用程序所需功能的等级,以确定使用 DataSet 或者是 DataReader
    对于下列情况,要在应用程序中使用 DataReader:
    
    •
    不需要缓存数据。 •
    要处理的结果集太大,内存中放不下。 •
    一旦需要以只进、只读方式快速访问数据。
  4. 用多个表填充 DataSet,创建一个 DataTableMapping,把 "Customers1" 映射到 "Orders",并为其他后面的表创建其他的表映射。例如:
    //C#
    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers; SELECT * FROM Orders;", myConnection);
    da.TableMappings.Add("Customers1", "Orders");
    DataSet ds = new DataSet();
    da.Fill(ds, "Customers");
  5. ExecuteScalar 和 ExecuteNonQuery/ExecuteReader
  1. 如果想返回像 Count(*)、Sum(Price) 或 Avg(Quantity) 的结果那样的单值,可以使用 Command.ExecuteScalar。ExecuteScalar 返回第一行第一列的值,将结果集作为标量值返回。(特别适合聚合函数,它的返回值是OBJECT[无法知道返回的第一行第一列是什么值])
  2. 使用不返回行的 SQL 语句时,例如修改数据(例如INSERT、UPDATE 或 DELETE)或仅返回输出参数或返回值,请使用 ExecuteNonQuery。只能接受受影响的行数,如果没有操作就返回-1.
  3. ExecuteReader:返回一个SqlDataReader对象。这个对象可以只读只进读取对象,reader方法判断有没有下一行
  1. 把 Null 作为参数值传递

    对数据库的命令中,当把空值作为参数值发送时,不能使用 null。而需要使用 DBNull.Value。例如:

    //C#
    SqlParameter param = new SqlParameter("@Name", SqlDbType.NVarChar, );
    param.Value = DBNull.Value;
  2. 当执行事务时,显式地在开始事务之前打开连接,并在提交之后关闭连接。例如:

    //C#
    public void RunSqlTransaction(SqlDataAdapter da, SqlConnection myConnection, DataSet ds)
    {
    myConnection.Open();
    SqlTransaction myTrans = myConnection.BeginTransaction();
    myCommand.Transaction = myTrans; try
    {
    da.Update(ds);
    myCommand.Transaction.Commit();
    Console.WriteLine("Update successful.");
    }
    catch(Exception e)
    {
    try
    {
    myTrans.Rollback();
    }
    catch (SqlException ex)
    {
    if (myTrans.Connection != null)
    {
    Console.WriteLine("An exception of type " + ex.GetType() +
    " was encountered while attempting to roll back the transaction.");
    }
    } Console.WriteLine(e.ToString());
    Console.WriteLine("Update failed.");
    }
    myConnection.Close();
    }
  3. 在 C# 中使用 "Using" 语句

    对于 C# 程序员来说,确保始终关闭 Connection 和 DataReader 对象的一个方便的方法就是使用 using 语句。using 语句在离开自己的作用范围时,会自动调用被“使用”的对象的 Dispose。例如:

    //C#
    string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"; using (SqlConnection conn = new SqlConnection(connString))
    {
    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT CustomerId, CompanyName FROM Customers"; conn.Open(); using (SqlDataReader dr = cmd.ExecuteReader())
    {
    while (dr.Read())
    Console.WriteLine("{0}\t{1}", dr.GetString(), dr.GetString());
    }
    }
  4. 下边的代码是使用MySQL Connector Net 的例子。注意:他的Parameter的前缀是“?”而不是“@”。这个问题比较特殊。CoreLab里面的Parameter的前缀就是“@”.
    string connStr = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false;port=3308", "localhost", "root", "", "test");
    try
    {
    MySqlConnection myConn = new MySqlConnection(connStr);
    myConn.Open();
    MySqlCommand cmd = myConn.CreateCommand(); cmd.Parameters.Add("?DocName", MySqlDbType.VarChar, );
    cmd.Parameters[].Value = "test by code";
    cmd.Parameters[].SourceColumn = "DocName";
    cmd.CommandText = "update t_docs set DocName=?DocName where DocId=4";
    cmd.ExecuteNonQuery();
  5. 知识经验分享来源

ADO.NET学习的更多相关文章

  1. ADO.NET 学习笔记 入门教程

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在 ...

  2. ADO.NET学习小结【1】正在更新...

    小弟正在学习ADO.net有误的地方还请大大们批评指出,小弟在此谢过了 一.ADO.net简述: 以前我们写程序尤其是写和数据库有关的应用程序时,你我都得要了解Microsoft ADO COM对象才 ...

  3. ADO.NET学习心得《一》

    大家好,我是代号六零一,很高兴又开始重启博客了,为了更好的加深自己的记忆和复习,今天开始坚持写写心得体会,刚开始学习ADO.NET的时候也是一脸懵逼的,代码只有动手敲打才会知道其实并不难,只要多敲几遍 ...

  4. ADO.NET学习系列(四)---窗体版的登录小程序

    1.需求分析:做一个登录的小程序,基于Winform的窗体小程序.基本要求:登录成功:弹框显示登录成功,登录失败就弹框显示失败. 扩展功能:登录次数超过3次,就”锁定“用户,提示登录错误次数过多,不能 ...

  5. ADO.NET学习系列(二)

    这次我使用ADO.NET来插入一条数据,到数据库中.主用到存储过程.我不想每次都是用SQL文本的形式了,那样始终没有进步--- 下面首先,我把我这次练习要用到的数据库脚本,贴出来: USE maste ...

  6. ADO.NET学习系列(一)

    一.ADO.NET基础 程序和数据库交互,要通过ADO.NET进行:通过ADO.NET就能在数据库中执行SQL了.ADO.NET中提供了对不同数据库的统一操作接口(ODBC).另外还有一种操作数据库的 ...

  7. ADO.NET学习系列(三)----做一个登录案例

    总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败. 方案一: 1.select* from 表名 where username=&quo ...

  8. ado.net 学习小结

    连接数据源 Connection对象.Connection对象处于最顶层,是所有数据访问请求的关口.我们通过其暴露的属性进行配置.下面是一段连接字符串的示例. if (string.IsNullOrE ...

  9. 菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类

    using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; usin ...

随机推荐

  1. 显示Class 'Think\Controller\FuController' not found和Call to a member function assign() on a non-object 的错误问题

    Class 'Think\Controller\FuController' not found 错误位置 FILE: D:\wamp\www\tinkphp\Application\Come\Cont ...

  2. CSS学习心得

    CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外 ...

  3. Upgrade NE script with GUI but cannot support multithread, need to add soon

    #-*- coding:utf-8 -*- __authour__='CC' from Tkinter import *import osimport telnetlibimport timeimpo ...

  4. 换个新的思路 代替解压jar包 例证:wechat4j 框架中的templateMsg类

    很多朋友在写java的程序的时候都喜欢用第三方的jar包和框架,有可能遇到jar包中的内容已经跟不上官方开发者文档的更新,导致部分内容出错了,这个时候可能就要放弃这个jar的使用,但是这个jar中的其 ...

  5. 怎样设置域名带www和不带www都可以访问

    1,域名解析添加两条A记录 2,IIS域名绑定添加两个主机头

  6. 2014最后一天,好烦!这个问题从来没遇到过!网上查找了很多办法都没解决!并且no wifi 了!

    org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread ...

  7. iOS - iOS 应用

    1.Xcode 项目属性 Product Name 软件名称.产品名称.项目名称 Organization Name 公司名称.组织名称 Organization Identifier 公司的唯一标识 ...

  8. java面向对象的语言

    对象:真实存在唯一的事物. 类: 实际就是对某种类型事物的共性属性与行为的抽取. 抽象的概念.... 车 我们从小的时候就不断的接触很多的对象,我们的大脑就会把 这些具备相同属性与行为的事物进行分类. ...

  9. IaaS、PaaS、SaaS 之间的区别

    IaaS.PaaS.SaaS 之间的区别 “云服务”现在已经快成了一个家喻户晓的词了.如果你还不知道PaaS.IaaS和SaaS的区别,那就太out了. “云”其实是互联网的一个隐喻,“云计算”其实就 ...

  10. Python_Day12_python mysql and ORM and redis

    本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令事务  创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql 1. 数 ...