搜尋此網誌

2015年4月2日 星期四

pl/sql死锁情况:record is locked by another user

一、PL/SQL 查看锁:
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id = t2.sid 
order by t2.logon_time;


二、查看锁后,找出sid,serial#,将所有的锁kill掉
alter system kill session 'sid,serial#'

2014年12月3日 星期三

VISUAL STUDIO 2008 DEFAULT BROWSER(預設瀏覽器)

我們在安裝好VS2008開發工具時,一般都會使用內建網頁伺服器來做測試、除蟲…等工作,但有個問題一直困擾我,就是VS2008預設啟動的「瀏覽器」是IE,但各位也知道,IE雖然是市佔率最高的瀏覽器,但它可不是最好debug的瀏覽器,所以我一直在想,有沒有辦法可以改變這個預設值。

但我找遍VS2008裡「工具」→「選項」所有細項,沒有就是沒有,也慢慢養成,VS2008開IE,我再打開Firefox,把IE裡的網址copy過去,再關閉IE,開始在Firefox工作。

這樣的步驟很多餘,我一直想要按「在瀏覽器中檢視」→「Firefox」→「debug,工作」。

今天終於找到了解決辦法。@.@""

「檔案」→「瀏覽方式」;


就那麼簡單,想要什麼自己加,你也可以在已加入的列表點兩下,使用選擇的瀏覽器來開啟內建網頁伺服器,「Ctrl+S」好用,「Ctrl+Shift+S」「Ctrl+Shift+W」也還不錯,但還是把「功能表列」看清楚,設定的東西玩玩無差,不要亂按確定就好。

2014年12月1日 星期一

C# WINFORM 取得執行程式所在的路徑方法

1.取得和設置當前目錄(即該進程從中啟動的目錄)的完全限定路徑。
string str = System.Environment.CurrentDirectory;
結果: C:\xxx\xxx

2.取得啟動了應用程序的可執行文件的路徑,不包括可執行文件的名稱。
string str = System.Windows.Forms.Application.StartupPath;
結果: C:\xxx\xxx

3.取得應用程序的當前工作目錄。
string str = System.IO.Directory.GetCurrentDirectory();
結果: C:\xxx\xxx

4.取得當前 Thread 的當前應用程序域的基目錄,它由程序集衝突解決程序用來探測程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
結果: C:\xxx\xxx\

5.取得和設置包含該應用程序的目錄的名稱。
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
結果: C:\xxx\xxx\

6.取得啟動了應用程序的可執行文件的路徑,包括可執行文件的名稱。
string str = System.Windows.Forms.Application.ExecutablePath;
結果: C:\xxx\xxx\xxx.exe

7.取得當前執行的exe的文件名。
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
結果: C:\xxx\xxx\xxx.exe

8.取得當前進程的完整路徑,包含文件名。
string str = this.GetType().Assembly.Location;
結果: C:\xxx\xxx\xxx.exe

2014年11月4日 星期二

長時間執行stored procedrue設定方式

1. 先試試在connection string加上 ;Connect Timeout=0;Connection Lifetime=100


2. 不行的話,就改
     SqlCommand DBCommand = new SqlCommand();
     DBCommand.CommandTimeout = 100000;

2014年11月2日 星期日

DBNull.Value 別和 null 混為一談

在 .NET Framework 中,時常為了要判斷來自資料庫的值是不是 NULL,通常都會大傷腦筋,而有些開發人員會使用 if (myField.Value == null) 來判斷,其實這是不對的~

資料庫的 NULL 值是一個標記,標示說資料庫目前這個欄位是空的,它的本質和空字串也不同,所以用 string.IsNullOrEmpty(myField.Value) 是無法判斷它是否為 NULL 值的,這也就是為什麼 DataRow 要提供一個 IsNull() 方法,而 DataReader 要多一個 IsDBNull() 的方法,就是因為 NULL 值的獨特性。

.NET Framework 官方文件也有提到:

請勿將物件導向程式語言中 Null 參照 (即 Visual Basic 中的 Nothing) 的概念與 DBNull 物件混為一談。在物件導向程式語言中,Null 參照 (即 Visual Basic 中的 Nothing) 表示物件的參考不存在。DBNull 則表示未初始化的變數或不存在的資料庫資料行。

那是否有一定可以在程式中判斷 NULL 值的?其實有的,System.DBNull 類別所提供的成員 Value (DBNull.Value) 就是代表資料庫中的 NULL 標記,因此開發人員可以使用如下的程式碼來判斷是否為 NULL 值:

public bool IsNull(object compareValue)
{
   return (DBNull.Value.Equals(compareValue));
}

或者是直接用 == 算符也可以:

public bool IsNull(object compareValue)
{
   return (compareValue == DBNull.Value);
}

2014年10月22日 星期三

如何過濾及排序DataTable並複製到新的DataTable

1.前言
將DataTable經由過濾,排序得到新的資料表。

2.說明
提供兩個方法,一種是將DataTable轉成DataView,利用DataView的RowFilter及Sort方法得到所需資料,然後再將DataView轉成DataTable。
另一種方法是利用DataTable.Select().CopyToDataTable()方式得到資料表。

private DataTable DataTableFilterSort(DataTable oTable, string filterExpression, string sortExpression)
{
    DataView dv = new DataView();
    dv.Table = oTable;
    dv.RowFilter = filterExpression;
    dv.Sort = sortExpression;
    DataTable nTable = dv.ToTable();
    return nTable;
}

private DataTable DataTableFilterSort(DataTable oTable, string filterExpression, string sortExpression)
{
    DataTable nTable = oTable.Select(filterExpression, sortExpression).CopyToDataTable();
    return nTable;
}

3.應用

DataTable oTable = GetDataTable("cars");
DataTable nTable = DataTableFilterSort(oTable, "SPEED='10'", "DIST asc");
dataGridView1.DataSource = nTable;

2014年10月20日 星期一

判斷字串中是否有中文字

Demo Code Ver. :.NET Framework 4.0

最近做一個小功能,要判斷傳入字串是否含有中文,再作後續的動作。這邊記錄判斷邏輯的寫法,程式的邏輯

為當傳入參數只要是字串中有任何一個中文字都會回傳True

謝謝Allen kuo指正,小弟這邊有一個地方沒有考慮到,應該還要多考慮一個中文的Unicode範圍,這樣才會精準

Unicode字元範圍

3400~4DFFh:中日韓認同表意文字擴充A區,總計收容6,582個中日韓漢字。
4E00~9FFFh:中日韓認同表意文字區,總計收容20,902個中日韓漢字。
A000~A4FFh:彝族文字區,收容中國南方彝族文字和字根。
AC00~D7FFh:韓文拼音組合字區,收容以韓文音符拼成的文字。
F900~FAFFh:中日韓兼容表意文字區,總計收容302個中日韓漢字。
FB00~FFFDh:文字表現形式區,收容組合拉丁文字、希伯來文、阿拉伯文、中日韓直式標點、小符號、半角符號、全角符號等。

public static bool isChinese(string strChinese)
{
    bool bresult = true;
    int dRange = 0;
    int dstringmax=Convert.ToInt32("9fff", 16);
    int dstringmin=Convert.ToInt32("4e00", 16);
    for (int i = 0; i < strChinese.Length; i++)
    {
        dRange = Convert.ToInt32(Convert.ToChar(strChinese.Substring(i, 1)));
        if (dRange >= dstringmin && dRange <dstringmax )
        {
            bresult = true;
  break;
        }
        else
        {
            bresult = false;
        }
    }

    return bresult;
}

驗證結果程式

Console.WriteLine(isChinese("中文").ToString());
Console.WriteLine(isChinese("Chinese").ToString());

Console.WriteLine(isChinese("AA中").ToString());



必須要考慮到unicode範圍才會正確