随手一记
1.在WinForm读取数据的时候经常会用到DataTable,而对读取的数据我们有时只想显示其中符合某些条件的数据,这个时候就可以使用DataTable的Select操作,dataTable.Select(”检查结果=‘“+result+”’“),其中检查结果是DataTable的Column Name,不要忘记result用用引号。
2.如何查询数据库中某一列的函数重复数据:
SQL语句:
select * from EMRInfo as a ,(select message from EMRInfo group by message having count(*)>1) b where a.message =b.message
这条SQL语句可以查询出EMRInfo表中的message列中的重复数据
3.在使用DevExpress控件时,如果想使用某个皮肤,只要在Program.cs文件中注册一下皮肤就可以了,比如:
DevExpress.Skins.SkinManager.Default.RegisterAssembly(typeof(DevExpress.UserSkins.testSkin).Assembly);
这句话就表示程序使用自定义的皮肤testSkin,这个testSkin可以通过DevExpress自带的皮肤工具进行编辑。如果想使用BonusSkins皮肤,只需加入下面一句代码即可:
DevExpress.UserSkins.BonusSkins.Register();
这个时候程序中就可以使用BonusSkins皮肤了。此外,如果不紧接着在下面添加
DevExpress.Skins.SkinManager.EnableFormSkins();
这段代码,Form边框是不会被应用皮肤风格的。
4.如何使DataTable中的数据是在一个时间段里:
string expression = "Update_Date > #2/23/2012# and Update_Date < #2/25/2012#"; DataRow[] drRows = dt.Select(expression);
5.获取DataTable中指定日期的数据:
(1) //如果'2012-2-23*'不加“*”,会得不出正确结果。 string expression = "Convert(Update_Date, 'System.String') like '2012-2-23*'"; DataRow[] drRows = dt.Select(expression); (2) string expression = "SUBSTRING(Convert(Update_Date, 'System.String'),1,10) like '2012-2-22'"; DataRow[] drRows = dt.Select(expression);
至于expression的用法参见微软官方网站:
http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression.aspx
6.关于ExecuteNonQuery执行存储过程的返回值
if(cmd.ExecuteNonQuery("xxxx")>0) { //执行成功! } else { //执行失败! }
通过ExecuteNonQuery()的返回值来判断操作数据库的成功与否是可以的。但是要分情况:
1.ExecuteNonQuery() 不执行存储过程.
此时如果对数据库执行,插入,更新,删除操作,返回的是 受影响的行数.(及一个大于等于0的整数)
2.ExecuteNonQuery() 执行查询不返回影响的行数.
2.ExecuteNonQuery 执行存储过程.
[1].存储过程有返回值(传出参数)
(1).把数据库中受影响的行数赋给返回值,这是得到的返回值是受影响的函数(大于或等于0的整数).
(2).把某个值赋给返回值.
[2].存储过程没有返回值
执行成功后返回 -1.
(没有返回值的存储过程理应 返回 受影响的行数 (执行 增删改) 但是.但我们在ado.net中执行存储过程的时候,dotnet 自动为给了存储过程一个默认值:set nocount on;
所以给我们的感觉是执行存储过程默认返回 -1 ,如果想要返回受影响的行数,只需将set nocount on改为set nocount off即可)
7.给SQL Server2005数据库的表设置多个主键:
只需在表的修改模式下,按住shift键然后选择要设置成主键的列,即可将所选择的列设置成为组合主键