2018-01-17 String 与StringBuilder、测试过程中可能遇到的问题、用EXCEL生成SQL语句、DevExpress GridControl 动态增加行

第一组:刘聪 String 与StringBuilder

在.NET中String其实是是不可改变对象,一旦创建了一个String对象并给它赋值,它就不可能再改变。看下面的这段代码:


2018-01-17 String 与StringBuilder、测试过程中可能遇到的问题、用EXCEL生成SQL语句、DevExpress GridControl 动态增加行_第1张图片

输出:


2018-01-17 String 与StringBuilder、测试过程中可能遇到的问题、用EXCEL生成SQL语句、DevExpress GridControl 动态增加行_第2张图片

看起来我们似乎已经把s的值从"1234"改为了"12345678",实际上并没有改变。string s = "1234";是创建了一个String对象它的值是"1234",s指向了它在内存中的地址,s += "5678";是创建了一个新的String对象它的值是"12345678",s指向了新的内存地址。这时在堆中其实存在着两个字符串对象,尽管我们只引用了他们中的一个,但字符串"1234"仍然在内存中驻留。

因此String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。

StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时使用中也许都知道,连接操作频繁的时候建议使用StringBuilder对象。


第二组:暂无


第三组:吴景霞 测试过程中可能遇到的问题

1. 未将对象引用到具体的实例:

可能造成该类型错误的实例和其解决方案有:

(1) 将null赋给string类型的字段:


数据库中或传进来的参数对应字段类型为null时,如果直接赋给string类型的字段,会报错,需要额外加一条判断语句:


这种写法等同于:


(2) 给类赋值的时候没有事先new:

在给para的UISearchPages这个类进行赋值的时候,如果直接使用赋值语句:


会报错,需要实现进行new操作:


2. 没有数据:

(1) 当使用框架自带的SelectById方法时,如果在数据库中找不到该方法,会报错:


(2) 使用SelectOne()操作时,如果数据库中查找不出符合搜索条件的数据,会报错:


可以实现进行判断,如果搜索不到值,则返回null:


2018-01-17 String 与StringBuilder、测试过程中可能遇到的问题、用EXCEL生成SQL语句、DevExpress GridControl 动态增加行_第3张图片
3. 找不到特定的列:

某张数据表中,数据库中的字段和Model表中字段相比,有缺失,推荐检错方法是使用SQL语句单独查找该表中的每一个Model表字段,看是否有缺失情况


第四组:傅云 用EXCEL生成SQL语句

2018-01-17 String 与StringBuilder、测试过程中可能遇到的问题、用EXCEL生成SQL语句、DevExpress GridControl 动态增加行_第4张图片

第五组:王炳钧 DevExpress GridControl 动态增加行

参考网址: http://blog.csdn.net/jjhua/article/details/7799885

DevExpress XtraGrid 添加新的一行时,数据源DataSource如果是DataTable可以用AddNewRow方法,然后UpdateCurrentRow。但是如果DataSource的来源是List,用AddNewRow是不起作用的,这时候需要将List转换为BindingList,才可以采用AddNewRow。

List to BindingList直接用构造函数就可以:

List source=new List();
BindingList temp=new BindingList(source);

然后通过反射逐个根据源数据行对新加行赋值

gvSelected.AddNewRow();
object destinationRow = gvSelected.GetFocusedRow();
object sourceRow = gvOriginal.GetRow(i);
System.Reflection.PropertyInfo[] propertyCollection = sourceRow.GetType().GetProperties();
 foreach (System.Reflection.PropertyInfo propertyInfo in propertyCollection)
  {
               destinationRow.GetType().GetProperty(propertyInfo.Name).SetValue(
destinationRow, sourceRow.GetType().GetProperty(propertyInfo.Name).GetValue(sourceRow,null), null);
  }
 gvSelected.UpdateCurrentRow();

你可能感兴趣的:(2018-01-17 String 与StringBuilder、测试过程中可能遇到的问题、用EXCEL生成SQL语句、DevExpress GridControl 动态增加行)