本人学.net不久,由于没有师傅带很多都是靠自学,有些问题拿捏不准,有时候因为别人的一句话我就会怀疑自己以前的做法是否正确,刚学.net时喜欢用sqldatasource这个控件来绑定数据,但后来发现页面里绑了很多加载变慢,后来直接在cs页面里写绑定函数,所有的数据查询通过这个函数实现,再后来把所有数据库操作写到一个类库里,用时直接使用返回的datatable!
但是最近我们老大(他是delphi程序员)和我讲了一件事,他说在delphi里面数据库操作更不用我这么麻烦,几句话就可以搞定了,这让我彻底怀疑自己的做法是否正确,又重新回去研究sqldatasoure控件但是始终没发现其中的奥妙,希望高人指点下!
另外我在使用参数式写法时感觉代码增加很大,以前的思路是直接写sql语句然后统一放到一个执行函数即可,但是如果用参数写法这就意味着在函数内部就必须执行,本人修行很短,希望大家有好的方法多多分享!
但是最近我们老大(他是delphi程序员)和我讲了一件事,他说在delphi里面数据库操作更不用我这么麻烦,几句话就可以搞定了,这让我彻底怀疑自己的做法是否正确,又重新回去研究sqldatasoure控件但是始终没发现其中的奥妙,希望高人指点下!
另外我在使用参数式写法时感觉代码增加很大,以前的思路是直接写sql语句然后统一放到一个执行函数即可,但是如果用参数写法这就意味着在函数内部就必须执行,本人修行很短,希望大家有好的方法多多分享!
解决方案 »
- System.NullReferenceException: 未将对象引用设置到对象的实例。
- |zyciis| IDictionary attributes 这个东西如何进行传值啊
- 关于access中的关系表
- 求助:VS2003 datagrid模板列不能编辑
- 如何合并两个有相同用字段的DataTable
- 下载文件之后出现网页错误的提示(难题)
- 如何在自定义控件中 使用AJAXControlToolkit DynamicPopulateExtender 控件
- 关于在程序中导入ORACLE数据的问题,高手请进,在线等
- 50元出售全新wrox<<ASP.NET编程起步(C#)>>
- 急等,请帮忙,重谢
- 大家帮帮忙了,我是新手了,不懂了,急需!!!!!
- aso.net后台代码使用事务需要如何设置隔离级别,需要判断事务状态吗?
里面的SQL语句可以说用得很优雅,可以参考模仿使用StringBuilder, 这样可以减少sql语句重复
http://www.cnblogs.com/insus/articles/1418377.html#2086143
进级版:http://www.cnblogs.com/insus/articles/2030985.html
string strconn = ConfigurationManager.AppSettings["DB01"];
SqlDataAdapter sqlAdapt = new SqlDataAdapter();
SqlConnection cn = new SqlConnection(strconn);
SqlDataAdapter Da1 = new SqlDataAdapter();
cn.Open(); SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = cn;
搜索一下SqlHelper 就知道了
你也可以百度动软代码生成器,看看生成的样子,学习李老师
1、隐匿查询时繁琐的T-SQL语句拼接,由解析器集中处理
2、尽可能的统一查询时使用条件实体
3、防止SQL注入
4、与快速开发工具集成,对于单表查询无需开发
如:[SelectFromClause("Project")]
[SortableColumn("Sequence", SortDirection.Asc)]
public sealed class ProjectCondition : QueryableObject
{
[QueryableColumn("Name", DbType.String, Operator.Like)]
public String Name { get; set; }
[QueryableColumn("CreatorUID", DbType.String, Operator.Like)]
public String CreatorUID { get; set; }
[QueryableColumn("StartTime", DbType.DateTime, Operator.GreaterThanOrEqual, null, "CreateTimeRange", 0)]
public Nullable<DateTime> StartTime { get; set; }
[QueryableColumn("EndTime", DbType.DateTime, Operator.LessThanOrEqual, null, "CreateTimeRange", 1)]
public Nullable<DateTime> EndTime { get; set; }
[QueryableColumn("Suspended", DbType.Boolean, Operator.Equal, null)]
public Nullable<Boolean> Suspended { get; set; }
}上面代码等价于:SELECT * FROM Project WHERE [Name] = Value AND [CreatorUID] = value AND ([StartTime] >= Value AND [EndTime] <= Value) AND [Suspended] = Value ORDER BY [Sequence] ASC