YangLei's

导航

 

1、获取类里面的属性名称字符串
public string GetPropertyName(Expression<Func<Item, string>> expr)
        {
            var name = ((MemberExpression)expr.Body).Member.Name;
            return name;
        }

string name = GetPropertyName(o=>o.Name);

2、oracle常犯的错误

(1)当应用程序的路径里面带有'_下划线'、非法字符时,oracle始终连接不上。

(2)当有表被锁住时,在执行SQL语句时程序会莫名的没任何反应,断点也会在执行SQL语句的时候消失。

(3)当在SQL语句绑定变量的时候,如果字段绑定的是NVarChar的时候 ,有可能会导致上面的问题。

(4)在安装oracle客户端的时候一次我安装到指定的目录program file 就因为路径有个空格死活装不完全,千万注意路径不能有非法字符。

 (5) COUNT(*),COUNT(col)  其中COUNT(*)会列出所有的行,COUNT(col)只会统计不为null的行。

3、oracle锁

1、IN EXCLUSIVE MODE NOWAIT  排它锁,如果表被锁住其它用户就只能查看。
如:session1 LOCK TABLE scp.BAS_TEST IN EXCLUSIVE MODE NOWAIT;
  那么session2 再进行(insert/update/delete)将一直等待锁的释放 或者 如果想用同样的方式获取锁将报错:资源已经被独占。
 
2、IN SHARE MODE NOWAIT 共享锁,如果获取此锁其它用户也只能查看。但其它用户也可以获取共享锁,但是双方都不能操作。
如:session1 LOCK TABLE scp.BAS_TEST IN SHARE MODE NOWAIT;
那么 session2 可以通过同样的方式获取共享锁,但是都不能操作,如果一方操作(insert/update/delete),则会等待其它释放共享锁。
 
注意:如果表被session1锁住了,这个时候session2用for update 去更新表是会一直等待session1释放锁的,如果用 for update nowait 则不会等待直接报错。

 

posted on 2012-12-05 13:07  大狼熙熙  阅读(167)  评论(0)    收藏  举报