一些开发中遇到的小问题小记(持续更新中)

来源:互联网 发布:淘宝怎么修改类目属性 编辑:程序博客网 时间:2024/04/29 18:38

1. C# 中 DataGridView 中如果 allowUserAddRow 属性为 true 时,DataGridView 中永远会多出空白的一行

2.在sql server 中 使用select  ROW_NUMBER() over(Order by column1,column2) as NO1 from  table1 order by column1,column2 后排序的顺序可能导致NO1是不连续的,

     因为可能存在 column1,column2相同的数据,第一次排序和第二次可能导致结果不一样 ,建议改成  order by NO1

3. 在sql 中 不能在子查询中 用 order by 语句

4.C#中使用 LISTBOX 实现多选的时候,获得多选值的问题

//绑定数据源

 ListBox1.datasource = Datatset.Table["1"];

LitsBox.displayMember ="columeName"

//获得多选的数据

ArrayList arrDate = new ArrayList();

for(int i=0;i<ListBox.SelectItems.count;i++){

arrDate.add(ListBox.SelectItems[i].toString());

}

结果:在arrDate 的值都是 System.Data.DataRowView 

原因分析:因为在item 绑定的都是 dataRowView  而 DataRowView 没有重载 ToString(),所以打印出来的是 类型

问题解决方案:

for(int i=0;i<ListBox.SelectItems.count;i++){

DataGirdView dv =((system.Data.DataRowView) ListBox.SelectItem[i]);

arrDate.add(dv["columName"].toString());

}

5.在DATAGridView 绑定数据后,对其中的某行进行隐藏不可见的时候使用 DATAGridView.Rows[i].Visable = false ;

         程序报“与货币管理器的位置关联的行不能设置为不可见。”的异常信息

需要对绑定数据进行挂起后操作(CurrencyManager 或一个 PropertyManager  如果数据源是只能返回单个属性的对象(而不是对象列表),该类型则为 PropertyManager 

 CurrencyManager cm = (CurrencyManager ) BindingContext[DatagridView.dataSource];

//数据挂起

cm.SuspendBinding();

 DATAGridView.Rows[i].Visable = false ;

//数据继续绑定

cm.ResumeBinding();

5.导表的时候,导入一个含有自增列的表,先同步了表结构,然后使用inset into  tableA select  top * from tableB 结果报错 “列表并且 IDENTITY_INSERT 为 ON 时,才能为表'T_CAR_INFO'中的标识列指定显式值。”  后来在网上找到是使用set IDENTITY_INSERT tableA ON 语句 然后继续inset into  tableA select  top * from tableB 错误同样出现

到网上找了很多资料,都没有找到,后来发现,是后面语句问题后面语句还是要一个一个字段写出了如:insert into TableA (column1,column2,column3) select column1,column2,column3  from tableB 但是这样对于很多字段的表就会浪费好大的工作量,后来想通过改表结构把该列设为非标志列,后来就遇到了在sqlserver工具中遇到的同样的问题就是不能修改已经建立的表结构,这个额问题好像在之前也遇到过,在工具选项中 ,设计,去掉阻止要求保存重建表结构的勾选

6.在写SQL语句的时候,where条件下存在多个条件,特别是存在OR 条件的时候,注意带上 ()

7. 在写sql 多表在内联的的时候,如果某字段存在NULL 值的时候,这个字段在关系的时候这条数据是永远不会出来,即使另外一个表也存在NULL值,因为在数据库中 任何值=null 都是false    

8.在sql server 中使用 update  a set a.column1=   a.column1 + b.column2 from a ,b where a.column1= b.column1  时出现,如果column1 为null时  null+任何值 都为null

9. 在sql server 中 使用 SUBSTRING(string ,star,length)  时候,在sql server 中String是从1开始计算的,如果Star 设置为 0或者小于1的数值时不会报错,直接开始计算会导致最后截取的字符小于实际的length,因为小于1开始的值截取都是无效值

10.在TEXTBOX框中添加设置换行

11.设置DATAGRIDVIEW 中 颜色时候 当设置为 DATAGRIDVIEW.ROWS[0].Cells[1].BackColor= color.red 之后想把改行颜色设为默认色的时候 无论使用

      DATAGRIDVIEW.SelectROWS[0].DefaultCellStyle.BackColor= color.Empty  颜色没有效果  只能单个单个单元格设置才有效果,因为单元格的颜色优先级高于整行的颜色,所以当单元格存在颜色的情况下以单元格之前的颜色为标准

12. 有如下一个表  查询表中  品种为水果  名称叫 香蕉的数据      select *  from table1 where 品种 =‘水果’  and 名称 =‘香蕉’   现在要查询品种不为水果且名称不叫香蕉的其他数据

          select *  from table1 where  品种<>'水果'   and 名称<>'香蕉'  (错) 应该为 select *  from table1 where  品种<>'水果'   or 名称<>'香蕉'(对) 

0 0
原创粉丝点击