学C#半个月了,求指教这个操作数据库的类有哪些可改善的地方

问题描述

///<summary>///SQL操作类///</summary>classMydata{SqlConnectionconn;publicMydata(){stringconstr="server=;database=userinfo;uid=sa;pwd=";//使用本类前请输入连接字符串conn=newSqlConnection(constr);if(conn.State==ConnectionState.Closed){conn.Open();}}///<summary>///执行查询语句并返回DataSet数据集///</summary>///<paramname="cmdstr"></param>///<returns></returns>publicDataSetGetdataset(stringcmdstr){SqlDataAdaptermyadapter=newSqlDataAdapter(cmdstr,conn);DataSetresult=newDataSet();myadapter.Fill(result);conn.Close();returnresult;}publicSqlDataReaderGetdatareader(stringcmdstr){SqlCommandcmd=newSqlCommand(cmdstr,conn);SqlDataReaderresult=cmd.ExecuteReader();returnresult;}///<summary>///语句执行方法,并返回影响的行数///</summary>///<paramname="cmdstr"></param>///<returns></returns>publicintSqlcmd(stringcmdstr){SqlCommandcmd=newSqlCommand(cmdstr,conn);intresult=(int)cmd.ExecuteScalar();conn.Close();returnresult;}}

解决方案

解决方案二:
连接字符串建议写在配置文件里面而不要硬编码万一哪天我DB的密码变了呢?难道你再重新编译?其他几个方法都要用using因为如果报异常了的话你就执行不到关闭数据库连接部分的代码了那就是种非托管资源的浪费而如果用了using.net内部是会生成trycatchfinally代码块来帮你最终实现关闭数据库连接的
解决方案三:
貌似你想写一个SqlHelper对数据库进行操作。其实网上有很多工具可以自动生成。没必要总是conn.Close();用using处理就行。比如://连接字符串staticstringconnectStr=ConfigurationManager.ConnectionStrings["SQL"].ConnectionString;//返回受影响的行数publicstaticintExecuteNonQuery(stringsql,paramsSqlParameter[]paras){using(SqlConnectionconn=newSqlConnection(connectStr)){using(SqlCommandcmd=newSqlCommand(sql,conn)){cmd.Parameters.AddRange(paras);if(conn.State==ConnectionState.Closed){conn.Open();}returncmd.ExecuteNonQuery();}}}
解决方案四:
你这里面方法就不要conn.Close了,创建一个实例,没必要只能执行一条语句吧,既然你在构造函数里打开连接,就将类型继承IDispose接口,在接口方法和析构函数里conn.Close,让调用方来关闭吧。
解决方案五:
顶楼上的
解决方案六:
把数据库的连接字符串写在app.config文件里然后调用就行了调用方法如下:“引用”中添加:System.Configuration类文件中添加:usingSystem.Configuration;代码中使用:ConfigurationManager.ConnectionStrings[“连接字符串名称"].ConnectionString;其他参考楼上,有空了LZ可以看看微软提供的SQLHelper
解决方案七:
一个SQL注入就毁掉你这个类了
解决方案八:
你这个类只支持sqlserver,无法支持其他数据库
解决方案九:
conn.Close()应该独立为一个方法publicvoidClose(){if(this.conn!=null){conn.Close();}}在业务逻辑层调用这个方法。Mydatasqlhelp=newMydata();当调用了sqlhelp.Getdataset等方法以后,最后要调用Close()方法。
解决方案十:
不要学着写这些东西先,这些都不是什么重点,先把C#的基本东西学完再说。
解决方案十一:
该回复于2012-06-11 08:33:18被版主删除
解决方案十二:
该回复于2012-06-11 08:33:18被版主删除
解决方案十三:
sql语句最好不要拼接生成,采用参数是个不错的办法。里边有些函数,变量可以改成静态的,前边加static,不用每次调用都去实例化你这个SqlHelper类。
解决方案十四:
用entityframework,用了一下,感觉还是不错的,增删改查10w条数据一下的速度都可以接受,如果需要批量就用bulk
解决方案十五:
楼主说到的类,个人认为连接可以使用单件模型,使用static来实例化连接对象,实现连接的复用,然后connectionstring可以弄到app.setting中,另外,可以再抽象一层,设置一个抽象的数据控制类,然后下面是继承的不同类型的数据控制类,比如sqlclient,oracleclient,mysqlclient等

时间: 2024-10-06 09:07:47

学C#半个月了,求指教这个操作数据库的类有哪些可改善的地方的相关文章

银联支付-求指教,Android电子钱包类APP的实现原理是什么?

问题描述 求指教,Android电子钱包类APP的实现原理是什么? 求大神指点,Android电子钱包类应用实现原理是什么? 解决方案 可以看一下这个<中国移动手机支付电子钱包开发文档>http://download.csdn.net/detail/hello_1984/6379317

xml-初学JAVA-XML遇到的问题,求指教

问题描述 初学JAVA-XML遇到的问题,求指教 题目:获得下图xml文件中第二个linkname中的name的内容,也就是"小李" 贴代码: 小蔡772088996@qq.com 成都 源代码教育 <linkman id="2"> <name>小李</name> <email>497458450@qq.com</email> <address>昆明</address> <gr

js-初学JS遇到的问题,求指教

问题描述 初学JS遇到的问题,求指教 现在在实验JS调用函数 1,在一个JS文件中写好的函数: 2,在一个HTML文件中调用上面的函数,但是为什么在浏览器里点击Button没反应? 解决方案 你没有在html中包含jstest.js <script type="text/javascript" src="jstest.js"></script> 解决方案二: 你只是写了js,但是在html中没有引用这个文件 自然点击也没有效果 解决方案三:

新手求指教C#连数据库问题,有40分

问题描述 有没高手指点下 解决方案 解决方案二:你应该先自己搞明白是哪一条语句抛出异常.如果连这个都懒得去说,那么别人也没有办法帮你.越是简单的问题,越说明了你的开发方法造成的危害(丧失了调适能力)有多严重.解决方案三:这句有问题解决方案四:引用2楼kawaiimonkeybb的回复: 这句有问题 把DAL部分贴出来以及连接部分这里猜测是又尝试打开数据库,但是前者并未关闭解决方案五:调试到具体的那一行,每次操作完毕之后都将数据库连接关闭一次.解决方案六:提示的很明显了啊,连接使用完了没有关闭嘛(

oracle10g 怎么从某一时间点或某一scn备份还原。求指教

问题描述 oracle10g 怎么从某一时间点或某一scn备份还原.求指教 10C oracle10g数据库迁移, 数据量太大, 做了一次全量备份后, 后续的数据变化,通过增量的方式(scn或时间点)的备份还原,怎么做. 解决方案 http://blog.chinaunix.net/uid-647720-id-2690402.htmlhttp://blog.csdn.net/fujianianhua/article/details/8182068 解决方案二: http://jingyan.ba

图片-求指教。。。刚学myeclipse,不知道这该怎么处理

问题描述 求指教...刚学myeclipse,不知道这该怎么处理 解决方案 一般来说myeclipse编译,我们无须太关注warning,主要要解决的是error,warning不会对你程序运行有影响,但是还是需要知道warning是什么意思, 如果对程序运行有影响再去解决吧. 解决方案二: 不报错就不影响,警告很容易就有,定义的方法,本页面没调用也会警告,不影响运行就行.

刚学c编的时间换算问题,感觉编的很笨求指教

问题描述 刚学c编的时间换算问题,感觉编的很笨求指教 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果小时小于10,则没有千位部分:如果小时是0,则没有百位部分:如果分小于10分,需要保留十位上的0.如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分. 有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输

java初学者求指教(原来写过一点C和C++)

问题描述 向各位大神求教:我刚毕业刚工作,我原本在学校学习的是c++,开发能力一般,代码量10000行左右(算上所有的作业,课程设计等等代码).现在在一家软件公司工作,写java代码,上学时从没看过java,工作了几个月了,学习了java的基本语法,实际项目上写了几千行代码了.总觉得java的基础很差,一般写代码我觉得和c++区别不大,对于一些高级的应用感觉不会.我现在是应该看Thinking in java这些nb的书?还有研究一下源码,包括一些j2ee的开源架构的源码?还是应该学什么,基本的

.net在南京上海有哪些不错的公司呢,求指教

问题描述 RT,学习.net,但是看看学校的校园招聘他们都是做C++,java,c啊,求指教.net的一些好公司 解决方案 解决方案二:上网去查查吧解决方案三:哎我同学年初北大青鸟毕业的学的java现在都要5k一个月了,南京我菜3.5k解决方案四:了解下~~~