C# 数据访问编码需要遵循的几个规范
一,链接打开之后必须关闭,否则会占用系统空间
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# 数据访问编码需要遵循的几个规范的更多相关文章
- (转)SQLServer_十步优化SQL Server中的数据访问 二
原文地址:http://tech.it168.com/a2009/1125/814/000000814758_all.shtml 第五步:识别低效TSQL,采用最佳实践重构和应用TSQL 由于每个程序 ...
- 分享自己的超轻量级高性能ORM数据访问框架Deft
Deft 简介 Deft是一个超轻量级高性能O/R mapping数据访问框架,简单易用,几分钟即可上手. Deft包含如下但不限于此的特点: 1.按照Transact-SQL的语法语义风格来设计,只 ...
- 在WCF数据访问中使用缓存提高Winform字段中文显示速度
在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析.如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处 ...
- 数据访问层DAL(数据库访问抽象类DataProvider)
晒晒数据访问层DAL,看看你的项目数据访问层使用的是什么形式,数据访问性能比较 采用什么样的数据访问形式是软件编码很重要的一个环节,良好的数据访问形式不仅能够提搞代码的执行效率,协作能力,更重要的是对 ...
- 超轻量级高性能ORM数据访问组件Deft,比dapper快20%以上
超轻量级高性能ORM数据访问组件Deft,比dapper快20%以上 阅读目录 Deft简介 Deft 核心类介绍 Deft 3分钟即可上手使用 其他可选的配置参数 性能测试 Demo代码下载 回到顶 ...
- 利用 pandas 进行数据的预处理——离散数据哑编码、连续数据标准化
数据的标准化 数据标准化就是将不同取值范围的数据,在保留各自数据相对大小顺序不变的情况下,整体映射到一个固定的区间中.根据具体的实现方法不同,有的时候会映射到 [ 0 ,1 ],有时映射到 0 附近的 ...
- jdbc数据访问技术
jdbc数据访问技术 1.JDBC如何做事务处理? Con.setAutoCommit(false) Con.commit(); Con.rollback(); 2.写出几个在Jdbc中常用的接口 p ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- Spring 4 官方文档学习(十)数据访问之JDBC
说明:未修订版,阅读起来极度困难 1.Spring框架JDBC的介绍 Spring JDBC - who does what? 动作 Spring 你 定义连接参数 是 打开连接 是 指定SQ ...
随机推荐
- ubuntu15.04安装hexo
首先吐槽一下npm淘宝源,貌似中国目前唯一一个npm源,现在不好用了,不知道是不是换了地址,在吐槽一下万恶的墙!你懂得. 好了,说点正儿八经的事儿. 之所以安装hexo也是为了创建自己的博客,我只说最 ...
- js 中的cookie
根据智能社31cookie基础与应用总结, cookie的特性: 1.同一个网站,共用一套cookie,实际上是根据域名来区分的. 如t.sina.com.cn ,和weibo.com这两个都是新浪微 ...
- [转] 解析LayoutSubviews
转自: http://www.cnblogs.com/YouXianMing/p/3897543.html 从百度上搜索了一下layoutSubviews的用处,以下是搜索的结果,当然,笔者是会一一验 ...
- windows环境下Mongodb分片配置
使用MongoDB的GridFS来存储文件,以前一直使用单个服务,分布式环境也一直没有配置成功,今天参考了几位大神的文章终于配置成功,再也不用担心文件存储的性能和安全啦.以下是自己部署的过程和示例,记 ...
- python读写zip文件
zipfile.ZipFile(fileName[, mode[, compression[, allowZip64]]]) fileName是没有什么疑问的了. mode和一般的文件操作一样,'r' ...
- 基于 JVMTI 实现 Java 线程的监控(转)
随着多核 CPU 的日益普及,越来越多的 Java 应用程序使用多线程并行计算来充分发挥整个系统的性能.多线程的使用也给应用程序开发人员带来了巨大的挑战,不正确地使用多线程可能造成线程死锁或资源竞争, ...
- vb和vb.net事件机制
学习java事件前,回顾了下vb6和vb.net的事件机制,总结在这里,供对比用. 事件是面对对象中对象间通信的方法.事件发生者(又叫事件源)发生一个事件时,通过发送一条消息,给事件接受者(事件处理者 ...
- PLSQL Developer过期要注冊表
打开执行输入 regedit 打表注冊表 删除 HKEY_CURRENT_USER\Software\Allround Automations HKEY_CURRENT_USER\Software\M ...
- PyDev下PyQt 的尝试
刚刚装完PyDev ,试了下之前写的调用PyQt的下代码,发现运行出错:搜索只还需在System PYHONPATH下 添加PyQt的路径,步骤如下: eclipse--window--Prefere ...
- Oracle 11gR2的完全卸载
首先停止oracle服务,卸载oracle,其次删除oracle文件夹,最后删除oracle服务和清理注册表. 以下是详细教程 1.关闭oracle所有的服务.可以在windows的服务管理器中关闭: ...