一,链接打开之后必须关闭,否则会占用系统空间

SqlConnection conn=new SqlConnection(CONNECTIONSTRING);

conn.open();

conn.close();   //必须成对出现

二,在创建命令对象commandText查询时尽量不要用join查询,那样会造成数据访问量加大,可编写多个函数查询多次来完成

三,在运行程序时,为防止编码出错而造成链接关闭不了,要用try--finally把代码包裹起来 ,之后不管try里面的代码出没出错都会执行到finally内的代码

SqlConnection conn=new SqlConnection(CONNECTIONSTRING);

try

{

conn.open();

SqlCommand cmd=conn.Createcommand();

cmd.CommandText="";

cmd.Executexxxxx();

}

finally

{

conn.close();

}

四,如果要从一个表中查询多条内容,可以编写一个函数返回SqlDataReader来简化代码,但还要保证链接能够关闭

static SqlDataReader GetKcDataReader(string name)
{
    SqlConnection conn = new SqlConnection(CONNECTIONSTRING);

conn.Open();
    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandText = "select * from kc where WzName='" + name + "'";
    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); //注意括号内给ExecuteReader添加了一个参数,用来调用的时候关闭链接
    return dr;

}
static decimal GetPrice(string name)
{
decimal price = 0;
SqlDataReader dr = GetKcDataReader(name);
dr.Read();
price = Convert.ToDecimal(dr["price"]);
dr.Close();  //用dr来关闭链接
return price;
}

五,为了防止SQL注入式攻击,在C#中编写sql语句时尽量不要用单引号',而用@xx

SqlConnection conn=new SqlConnection(CONNECTIONSTRING);

try

{

conn.open();

SqlCommand cmd=conn.Createcommand();

cmd.CommandText = "delete from work where infocode=@no";
cmd.Parameters.Clear();  //编码习惯,为了防止@no声明重复,事先清除一下
cmd.Parameters.AddWithValue("@no", no);
cmd.ExecuteNonQuery();

}

finally

{

conn.close();

}

六,执行聚合函数查询的时候,用ExecuteScalar()执行SQL语句,返回首行首列中的值。

cmd.CommandText = "select count(*) from work where infocode=@no";

cmd.Parameters.Clear();  
cmd.Parameters.AddWithValue("@no", no);

int count =(int)cmd.ExecuteScalar();   //ExecuteScalar()返回值为object类型,需强转成int类型

C# 数据访问编码需要遵循的几个规范的更多相关文章

  1. (转)SQLServer_十步优化SQL Server中的数据访问 二

    原文地址:http://tech.it168.com/a2009/1125/814/000000814758_all.shtml 第五步:识别低效TSQL,采用最佳实践重构和应用TSQL 由于每个程序 ...

  2. 分享自己的超轻量级高性能ORM数据访问框架Deft

    Deft 简介 Deft是一个超轻量级高性能O/R mapping数据访问框架,简单易用,几分钟即可上手. Deft包含如下但不限于此的特点: 1.按照Transact-SQL的语法语义风格来设计,只 ...

  3. 在WCF数据访问中使用缓存提高Winform字段中文显示速度

    在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析.如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处 ...

  4. 数据访问层DAL(数据库访问抽象类DataProvider)

    晒晒数据访问层DAL,看看你的项目数据访问层使用的是什么形式,数据访问性能比较 采用什么样的数据访问形式是软件编码很重要的一个环节,良好的数据访问形式不仅能够提搞代码的执行效率,协作能力,更重要的是对 ...

  5. 超轻量级高性能ORM数据访问组件Deft,比dapper快20%以上

    超轻量级高性能ORM数据访问组件Deft,比dapper快20%以上 阅读目录 Deft简介 Deft 核心类介绍 Deft 3分钟即可上手使用 其他可选的配置参数 性能测试 Demo代码下载 回到顶 ...

  6. 利用 pandas 进行数据的预处理——离散数据哑编码、连续数据标准化

    数据的标准化 数据标准化就是将不同取值范围的数据,在保留各自数据相对大小顺序不变的情况下,整体映射到一个固定的区间中.根据具体的实现方法不同,有的时候会映射到 [ 0 ,1 ],有时映射到 0 附近的 ...

  7. jdbc数据访问技术

    jdbc数据访问技术 1.JDBC如何做事务处理? Con.setAutoCommit(false) Con.commit(); Con.rollback(); 2.写出几个在Jdbc中常用的接口 p ...

  8. 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案

    1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...

  9. Spring 4 官方文档学习(十)数据访问之JDBC

    说明:未修订版,阅读起来极度困难 1.Spring框架JDBC的介绍 Spring JDBC - who does what? 动作 Spring 你 定义连接参数   是 打开连接 是   指定SQ ...

随机推荐

  1. ubuntu12.04中如何设定中文输入法

    安装 ibus 终端输入:sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4 启动 ibus 终端输入 :  im-s ...

  2. 为什么要用BASE64

    BASE64和其他相似的编码算法通常用于转换二进制数据为文本数据,其目的是为了简化存储或传输.更具体地说,BASE64算法主要用于转换二进 制数据为ASCII字符串格式.Java语言提供了一个非常好的 ...

  3. c# 数据库编程(通过SqlCommand 执行DML语句)

    原来一直是java,python等语言,最近用c#语言,并编写数据库访问代码.使用了之后,这里总结下,分享下c#如何操作数据库. 在java等其它语言中,有一套标准的api来完成数据库访问,并且一般都 ...

  4. 《HTML 5网页开发实例具体解释》文件夹

    第一篇  从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的总体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1  你是不是真的 ...

  5. 四、Nginx负载均衡upstream

    user www; worker_processes ; error_log /usr/local/nginx/logs/error.log crit; pid /usr/local/nginx/lo ...

  6. 高级UIKit-09(TCPSocket发送文件、上传和下载)

    [day1101_SocketSendFile]:发送文件到服务端 发送文件需要在该文件上拼接消息头,比如类型,文件名,文件大小 // 服务端 - (void)viewDidLoad { [super ...

  7. Mac OSX的开机启动配置

    Login Items Mac OSX的当前用户成功登录后启动的程序,该类别的启动项配置文件存放在~/Library/Preferences/com.apple.loginitems.plist,所以 ...

  8. 在OpenShift平台开发Node.js程序

    设置process.env方便本地调试 --------------------- 修改~/.profile,增加下面两行,然后执行`. ~/.profile`: export OPENSHIFT_N ...

  9. C#版二维码生成器附皮肤下载

    原文 C#版二维码生成器附皮肤下载 前言 本文所使用的二维码生成代码是谷歌开源的条形码图像处理库完成的,c#版的代码可去https://code.google.com/p/zxing/download ...

  10. itextSharp 使用模板(PdfTemplate)不规则分栏(ColumnText)

    public static void Main() { Document document = new Document(); BaseFont bf = BaseFont.createFont(Ba ...