ADO.NET学习
- ADO.NET重要的类
- 在.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(); - 设计应用程序时,要考虑应用程序所需功能的等级,以确定使用 DataSet 或者是 DataReader。
对于下列情况,要在应用程序中使用 DataReader: •
不需要缓存数据。 •
要处理的结果集太大,内存中放不下。 •
一旦需要以只进、只读方式快速访问数据。 用多个表填充 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");- ExecuteScalar 和 ExecuteNonQuery/ExecuteReader
- 如果想返回像 Count(*)、Sum(Price) 或 Avg(Quantity) 的结果那样的单值,可以使用 Command.ExecuteScalar。ExecuteScalar 返回第一行第一列的值,将结果集作为标量值返回。(特别适合聚合函数,它的返回值是OBJECT[无法知道返回的第一行第一列是什么值])
- 使用不返回行的 SQL 语句时,例如修改数据(例如INSERT、UPDATE 或 DELETE)或仅返回输出参数或返回值,请使用 ExecuteNonQuery。只能接受受影响的行数,如果没有操作就返回-1.
- ExecuteReader:返回一个SqlDataReader对象。这个对象可以只读只进读取对象,reader方法判断有没有下一行
把 Null 作为参数值传递
对数据库的命令中,当把空值作为参数值发送时,不能使用 null。而需要使用 DBNull.Value。例如:
//C#
SqlParameter param = new SqlParameter("@Name", SqlDbType.NVarChar, );
param.Value = DBNull.Value;当执行事务时,显式地在开始事务之前打开连接,并在提交之后关闭连接。例如:
//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();
}在 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());
}
}- 下边的代码是使用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();
ADO.NET学习的更多相关文章
- ADO.NET 学习笔记 入门教程
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在 ...
- ADO.NET学习小结【1】正在更新...
小弟正在学习ADO.net有误的地方还请大大们批评指出,小弟在此谢过了 一.ADO.net简述: 以前我们写程序尤其是写和数据库有关的应用程序时,你我都得要了解Microsoft ADO COM对象才 ...
- ADO.NET学习心得《一》
大家好,我是代号六零一,很高兴又开始重启博客了,为了更好的加深自己的记忆和复习,今天开始坚持写写心得体会,刚开始学习ADO.NET的时候也是一脸懵逼的,代码只有动手敲打才会知道其实并不难,只要多敲几遍 ...
- ADO.NET学习系列(四)---窗体版的登录小程序
1.需求分析:做一个登录的小程序,基于Winform的窗体小程序.基本要求:登录成功:弹框显示登录成功,登录失败就弹框显示失败. 扩展功能:登录次数超过3次,就”锁定“用户,提示登录错误次数过多,不能 ...
- ADO.NET学习系列(二)
这次我使用ADO.NET来插入一条数据,到数据库中.主用到存储过程.我不想每次都是用SQL文本的形式了,那样始终没有进步--- 下面首先,我把我这次练习要用到的数据库脚本,贴出来: USE maste ...
- ADO.NET学习系列(一)
一.ADO.NET基础 程序和数据库交互,要通过ADO.NET进行:通过ADO.NET就能在数据库中执行SQL了.ADO.NET中提供了对不同数据库的统一操作接口(ODBC).另外还有一种操作数据库的 ...
- ADO.NET学习系列(三)----做一个登录案例
总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败. 方案一: 1.select* from 表名 where username=&quo ...
- ado.net 学习小结
连接数据源 Connection对象.Connection对象处于最顶层,是所有数据访问请求的关口.我们通过其暴露的属性进行配置.下面是一段连接字符串的示例. if (string.IsNullOrE ...
- 菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类
using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; usin ...
随机推荐
- Windows光标形状
::SetCursor( LoadCursor(NULL, IDC_XXX) ); IDC_ARROW (plain) IDC_HELP (arrow + question mark) IDC_APP ...
- pure virtual function call
2015-04-08 10:58:19 基类中定义了纯虚函数,派生类中将其实现. 如果在基类的构造函数或者析构函数中调用了改纯虚函数, 则会出现R6205 Error: pure virtual fu ...
- 【前端】Web前端学习笔记【2】
[2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...
- 关于 OJ1574的参考题解(较麻烦)
#include <stdio.h>int main(){ long a,b,c,d,e; scanf("%ld",&a); d=a; b=0; while(d ...
- 用FileInputStream实现文本复制
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* * 用f ...
- 运行Shell脚本的几种方式解析
1 给脚本加上执行权限chmod u+x a.sh, 而后就可以直接用全路径来执行脚本了,比如当前文件夹下用./a.sh, 如果脚本所在目录在PATH环境变量之中, 则直接用a.sh即可 2 sh/b ...
- 远程连接redis
1.在ubuntu上的redis作为服务端,默认是打开的 在redis的配置文件redis.conf中,找到bind localhost注释掉. 注释掉本机,局域网内的所有计算机都能访问. bind ...
- c#winform程序退出的方法
一共有4种方式: 1.this.Close(); 只是关闭当前窗口,若不是主窗体,无法退出程序,另外若有托管线程(非主线程),也无法干净的退出: 2.Application.Exit();强制所有消 ...
- fstream文件操作
fstream(const char* filename, ios::openmode); ios::app: 以追加的方式打开文件 ios::ate: 文件打开后定位到文件尾,ios:app就包含有 ...
- js操作新添加的DOM的问题
$(function(){ $("body").on("click", '.abc', function(){ alert('ok'); }); $('.b') ...