目前分類:未分類文章 (75)

瀏覽方式: 標題列表 簡短摘要
在網頁上呼叫 DataBind
方法時,資料繫結運算式便會在伺服控制項屬性和資料來源之間建立繫結。您可以將資料繫結運算式包含在伺服器控制項開頭標記中屬性/值配組中值的那一端,或是網頁上的任何位置。

- or - literal text

# 所有的資料繫結運算式都必須包含在 字元之間。

# 資料繫結運算式使用 EvalBind
方法將資料繫結至控制項,並將變更送回資料庫。Eval 方法是一種靜態 (唯讀)
方法,會取得資料欄位的值,並且將其以字串的形式送回。Bind
方法支援讀/寫功能,並具有擷取資料繫結控制項之值,以及將所有變更都送回資料庫的能力。

# 使用 XPathXPathSelect
方法,以及 XPathBinder 類別,即可從
XmlDataSource
控制項繫結至 XML 資料。

Sample
    
        void SubmitBtn_Click(Object sender, EventArgs e) {
          // Rather than explictly pulling out the variable from the StateList control
          // and then manipulating a Label control, just call Page.DataBind.
          // This will evaluate any expressions within the page.   
          Page.DataBind();
        }
    

    

Binding to a property of another server control

    
        
          CA
          IN
          KS
          MD
          MI
          OR
          TN
          UT
               
                
        

    

        Selected State:     
    

可參考下列連結

give 發表在 痞客邦 留言(0) 人氣()

  1. 下載Log4Net
    http://logging.apache.org/log4net/download.html
  2. 解開,在專案中加入參考
  3. 設定好config.xml (範例可google一下)
  4. 加入
    using log4net;
    using log4net.Config
  5. 取得config.xml,類似以下範例
    XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("config.xml")));
  6. 宣告 (ClassName替換成使用中的Class)
    private static readonly ILog log = LogManager.GetLogger(typeof(ClassName));
  7. Done!

 

give 發表在 痞客邦 留言(0) 人氣()

1.獲取和設置當前目錄的完全限定路徑。

string str = System.Environment.CurrentDirectory;

Result: C:\xxx\xxx

2.獲取啟動了應用程序的可執行文件的路徑,不包括可執行文件的名稱。

string str = System.Windows.Forms.Application.StartupPath;

Result: C:\xxx\xxx

3.獲取新的 Process 組件並將其與當前活動的進程關聯的主模塊的完整路徑,包含文件名。

string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

Result: C:\xxx\xxx\xxx.exe

4.獲取當前 Thread 的當前應用程序域的基目錄,它由程序集衝突解決程序用來探測程序集。

string str = System.AppDomain.CurrentDomain.BaseDirectory;

Result: C:\xxx\xxx\

5.獲取應用程序的當前工作目錄。

string str = System.IO.Directory.GetCurrentDirectory();

Result: C:\xxx\xxx

6.獲取和設置包含該應用程序的目錄的名稱。

string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

Result: C:\xxx\xxx\

7.獲取當前進程的完整路徑,包含文件名。

string str = this.GetType().Assembly.Location;

Result: C:\xxx\xxx\xxx.exe

8.獲取啟動了應用程序的可執行文件的路徑,包括可執行文件的名稱。string str = System.Windows.Forms.Application.ExecutablePath;



Result: C:\xxx\xxx\xxx.exe

此外,更多見的通過XML文件配置具體的路徑來達到合理的規劃配置文件的具體存放位置,如WEB中的配置文件中的路徑。


give 發表在 痞客邦 留言(0) 人氣()

<asp:GridView ID="gvResult2" runat="server" CssClass="table-view"
    DataKeyNames="MetadataId" DataSourceID="ObjectDataSource1">
    <RowStyle CssClass="row-item" />
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="CheckBox1" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="序號">
            <ItemTemplate>
                <%# Container.DataItemIndex + 1 %></ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <FooterStyle CssClass="row-foot" />
    <AlternatingRowStyle CssClass="row-alter" />
</asp:GridView>

give 發表在 痞客邦 留言(0) 人氣()

時間字串的資料如下:
2008/10/21 下午 06:01:39

現在要透過c#將資料寫回oracle內,若直接使用

TO_DATE('2008/10/21 下午 06:01:39', 'yyyy-mm-dd hh:mi:ss')

會造成 ORA-01858: a non-numeric character was found where a numeric was expected

解法:

1.先用將原始字串轉換

Convert.ToDateTime("2008/10/21 下午 06:01:39").ToString("u")

u是 Universal sortable (invariant) 格式,輸出結果像是 2006-04-17 21:22:48Z
(ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.cht/fxref_mscorlib/html/35b48850-3558-6011-1368-facb5f7986bd.htm#seeAlsoToggle)

字尾有多個Z,用Substring砍掉

Convert.ToDateTime(payDate).ToString("u").Substring(0, 19)

2. 使用TO_DATE寫回Date欄位

TO_DATE('<將轉換過的字串代入>', 'yyyy-mm-dd hh24:mi:ss')

 

Sample:

string payTool = (node.SelectSingleNode(".//PayTool")).InnerText;      
string paySerial = (node.SelectSingleNode(".//PaySerial")).InnerText; 
string payResult = (node.SelectSingleNode(".//PayResult")).InnerText;  
string payDate = (node.SelectSingleNode(".//AuthorizeDateTime")).InnerText;

string sql = string.Format("UPDATE ORDERS SET HOWTOPAY = '{0}', PAYRESULT = '{1}', PAYDATE = TO_DATE('{2}','yyyy-mm-dd hh24:mi:ss'), STATUS = '{3}' WHERE ID = '{4}'", payTool, payResult, Convert.ToDateTime(payDate).ToString("u").Substring(0, 19), "1", paySerial);

give 發表在 痞客邦 留言(1) 人氣()

在<system.web>中加上以下參數
<webServices>
      <protocols>
        <add name="HttpPost"/>
        <add name="HttpGet"/>
      </protocols>
</webServices>



比較完整的範例
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>

give 發表在 痞客邦 留言(0) 人氣()

  • ASSOC
    顯示或修改檔案附檔名關聯。
  • AT
    排定電腦上要執行的命令和程式。
  • ATTRIB
    顯示或變更檔案屬性。
  • BREAK
    設定或清除擴充的CTRL+C檢查。
  • CACLS
    顯示或修改檔案的存取控制清單(ACLs)。
  • CALL
    從另一個批次程式呼叫一個批次程式。
  • CD
    顯示目前目錄的名稱或變更。
  • CHCP
    顯示或設定作用中的字碼編號。
  • CHDIR
    顯示目前目錄的名稱或變更。
  • CHKDSK
    檢查磁碟並顯示狀態報告。
  • CHKNTFS
    顯示或修改開機時的磁碟檢查。
  • CLS
    清除螢幕。
  • CMD
    開始新的Windows命令轉譯器。
  • COLOR
    設定預設主控台的前景和背景色彩。
  • COMP
    比較兩個或兩組檔案的內容。
  • COMPACT
    顯示或變更NTFS磁碟分割上的檔案壓縮。
  • CONVERT
    將FAT磁碟區轉換成NTFS格式。您不可轉換目前的磁碟機。
  • COPY
    將一個或數個檔案複製到另一個位置。
  • DATE
    顯示或設定日期。
  • DEL
    刪除檔案。
  • DIR
    顯示目錄中的檔案和子目錄清單。
  • DISKCOMP
    比較兩張磁片的內容。
  • DISKCOPY
    將磁片上的內容複製到另一張磁片上。
  • DOSKEY
    編輯命令列、恢復Windows命令和建立巨集。
  • ECHO
    顯示訊息、開啟或關閉命令回音。
  • ENDLOCAL
    結束批次檔環境變更的本土化工作。
  • ERASE
    刪除一個或更多檔案。
  • EXIT
    結束CMD.EXE程式(命令轉譯器)。
  • FC
    比較兩個或兩組檔案,然後顯示兩者之間的相異處。
  • FIND
    在檔案中搜尋文字字串。
  • FINDSTR
    在檔案中搜尋字串。
  • FOR
    在一組檔案中的每個檔案執行一個特定的命令。
  • FORMAT
    將磁碟格式化供Windows使用。
  • FTYPE
    顯示或修改用於檔案附檔名關聯中的檔案類型。
  • GOTO
    將Windows命令轉譯器指向批次程式中已經加了標籤的列。
  • GRAFTABL
    啟用Windows在圖形模式下顯示擴充的字集。
  • HELP
    為Windows命令提供說明資訊。
  • IF
    在批次程式中執行有條件的處理程序。
  • LABEL
    建立、變更或刪除磁碟的磁碟區標籤。
  • MD
    建立目錄。
  • MKDIR
    建立目錄。
  • MODE
    設定系統裝置。
  • MORE
    一次顯示一個螢幕的輸出。
  • MOVE
    從一個目錄移動一個或數個檔案到另一個目錄。
  • PATH
    顯示或設定執行檔的搜尋路徑。
  • PAUSE
    暫停處理批次檔並顯示訊息。
  • POPD
    還原PUSHD儲存的目錄之前的值。
  • PRINT
    列印文字檔案。
  • PROMPT
    變更Windows的命令提示。
  • PUSHD
    儲存目前的目錄,然後變更它。
  • RD
    移除目錄。
  • RECOVER
    從損壞或不良的磁碟中修復可讀取的資訊。
  • REM
    在批次檔或CONFIG.SYS鐘記錄意見(註解)。
  • REN
    重新命名檔案。
  • RENAME
    重新命名檔案。
  • REPLACE
    取代檔案。
  • RMDIR
    移除目錄。
  • SET
    顯示、設定或移除Windows環境變數。
  • SETLOCAL
    開始批次檔中環境變更的本土化工作。
  • SHIFT
    變更批次檔中可取代參數的位置。
  • SORT
    將輸入排序。
  • START
    開始另一個視窗來執行指定的程式或命令。
  • SUBST
    將路徑與磁碟機代號相關聯。
  • TIME
    顯示或設定系統時間。
  • TITLE
    設定CMD.EXE工作階段的視窗標題。
  • TREE
    以圖形顯示磁碟機或路徑的目錄結構。
  • TYPE
    顯示文字檔的內容。
  • VER
    顯示Windows版本。
  • VERIFY
    告訴Windows是否要檢查您的檔案寫入磁片時正確與否。
  • VOL
    顯示磁碟區標籤和序號。
  • XCOPY
    複製檔案和樹狀目錄。

give 發表在 痞客邦 留言(0) 人氣()

一、問題起因
在某項目釋放後Bug統計的附件《釋放後問題》裡有:

CSV處理時,如果處理的主題數過多,發生URL參數上限的錯誤;

可變長度的參數通過URL方式傳遞,會造成這種潛在的錯誤發生。

1、屬於2次發生問題,開發方面沒有及時通過checklist等方式向組員傳達相關注意事項;
2、測試時沒有作大批量數據的測試;

1、作為經驗添加至CheckList中,加強組內共享、檢查的效果;
2、加強測試點是否完備的檢查,重點關注對開發方面共性問題的測試;
通過對模塊原有GUI狀況確認,進行CSV輸出時,輸出結果很大的場合,CSV文件的內容不能輸出。

沒有考慮到POST數據量存在128K的大小限制。

這屬於新問題,以前從未遇見過,也沒有進行過大規模的數據量測試

已將此類檢查列出CheckList中
做為一種經驗積累,這些問題、原因及解決辦法將被列入Checklist,那麼:
第一個問題:URL參數上限的提法準確嗎?上限是多少?
第二個問題:為什麼POST時數據有限制?限制是128K嗎?
二、問題分析
1、第一個:
1)URL不存在參數上限的說法。該問題實際是IE對URL有長度限制的問題。
2)HTTP協議規範也沒有對URL長度進行限制。這個限制是特定的瀏覽器及服務器對它的限制。IE對URL長度的限制是2083字節(2K+35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於操作系統的支持。[參1]
3)「可變長度的參數通過URL方式傳遞」實際是說提交表單時使用了GET方法,而不是POST方法。造成這種潛在錯誤的是使用GET方法提交表單數據。因為GET方法將數據放在URL裡傳遞給服務器處理。
4)注意這個限制是整個URL長度,而不僅僅是你的參數值數據長度。
5)既然是IE對URL長度的限制,那麼不管是GET方法還是POST方法都存在這個限制。
(關於FORM的GET和POST方法具體內容請參考相關資料[參2])
建議:
1)瞭解應用程序所在的環境,如Web應用的瀏覽器、服務器環境,瞭解其特定的參數限制情況。
2)提交複雜數據儘量使用POST方法。注意FORM不寫method屬性時默認是使用GET方法。
結論(寫入Checklist):
對使用GET方法提交數據時,在IE環境下,需要考慮URL長度2083字節的限制。
2、第二個:
1)理論上講,POST是沒有大小限制的。HTTP協議規範也沒有進行大小限制。
2)「POST數據量存在128K的大小限制」不夠準確,POST數據是沒有限制的,起限制作用的是服務器的處理程序的處理能力。
3)對於ASP程序,Request對象處理每個表單域時存在100K的數據長度限制。但如果使用Request.BinaryRead則沒有這個限制。對於需要處理超過100K表單域數據的解決辦法,請參考後面的[參3]。
4)由這個延伸出去,對於IIS 6.0,微軟出於安全考慮,加大了限制[參4]。我們還需要注意:
IIS 6.0默認ASP POST數據量最大為200KB,每個表單域限制是100KB。
IIS 6.0默認上傳文件的最大大小是4MB。
IIS 6.0默認最大請求頭是16KB。
IIS 6.0之前沒有這些限制。
建議:
1)弄清楚運行環境的默認設定值有助於你的設計及對出現的問題做快速的解決。
2)應該考慮服務器版本。各個版本的IIS對這些參數的默認設定都不一樣,有必要的話,找資料整理出一份對照表。這樣開發與測試時都有個參考。
3)IIS 6.0的這些限制實際只是它的默認設定值而已,實際應用環境你可以修改它們。
在WINNT\system32\inetsrv\MetaBase.xml裡默認定義了:
AspBufferingLimit="4194304" 對應於上傳文件最大大小
AspMaxRequestEntityAllowed="204800" 對應於POST最大數據量
結論(寫入Checklist):
使用ASP時,需要考慮POST表單每個域一般讀取處理時有100KB的限制。充分考慮是否使用Request.Binary。


give 發表在 痞客邦 留言(0) 人氣()

The ALTER TABLE statement allows you to rename an existing table. It can also be used to add, modify, or drop a column from an existing table.

Renaming a table

The basic syntax for renaming a table is:

ALTER TABLE table_name
RENAME TO new_table_name;

For example:

ALTER TABLE suppliers
RENAME TO vendors;

This will rename the suppliers table to vendors.

Adding column(s) to a table

Syntax #1

To add a column to an existing table, the ALTER TABLE syntax is:

ALTER TABLE table_name
ADD column_name column-definition;

For example:

ALTER TABLE supplier
ADD supplier_name varchar2(50);

This will add a column called supplier_name to the supplier table.

Syntax #2

To add multiple columns to an existing table, the ALTER TABLE syntax is:

ALTER TABLE table_name
ADD ( column_1 column-definition,
column_2 column-definition,
...
column_n column_definition );

For example:

ALTER TABLE supplier
ADD ( supplier_name varchar2(50),
city varchar2(45) );

This will add two columns (supplier_name and city) to the supplier table.

Modifying column(s) in a table

Syntax #1

To modify a column in an existing table, the ALTER TABLE syntax is:

ALTER TABLE table_name
MODIFY column_name column_type;

For example:

ALTER TABLE supplier
MODIFY supplier_name varchar2(100) not null;

This will modify the column called supplier_name to be a data type of varchar2(100) and force the column to not allow null values.

Syntax #2

To modify multiple columns in an existing table, the ALTER TABLE syntax is:

ALTER TABLE table_name
MODIFY ( column_1 column_type,
column_2 column_type,
...
column_n column_type );

For example:

ALTER TABLE supplier
MODIFY ( supplier_name varchar2(100) not null,
city varchar2(75) );

This will modify both the supplier_name and city columns.

Drop column(s) in a table

Syntax #1

To drop a column in an existing table, the ALTER TABLE syntax is:

ALTER TABLE table_name
DROP COLUMN column_name;

For example:

ALTER TABLE supplier
DROP COLUMN supplier_name;

This will drop the column called supplier_name from the table called supplier.

Rename column(s) in a table
(NEW in Oracle 9i Release 2)

Syntax #1

Starting in Oracle 9i Release 2, you can now rename a column.

To rename a column in an existing table, the ALTER TABLE syntax is:

ALTER TABLE table_name
RENAME COLUMN old_name to new_name;

For example:

ALTER TABLE supplier
RENAME COLUMN supplier_name to sname;

This will rename the column called supplier_name to sname.

Acknowledgements: Thanks to Dave M., Craig A., and Susan W. for contributing to this solution!

Practice Exercise #1:

Based on the departments table below, rename the departments table to depts.

CREATE TABLE departments
( department_id number(10) not null,
department_name varchar2(50) not null,
CONSTRAINT departments_pk PRIMARY KEY (department_id)
);

Solution:

The following ALTER TABLE statement would rename the departments table to depts:

ALTER TABLE departments
RENAME TO depts;


Practice Exercise #2:

Based on the employees table below, add a column called salary that is a number(6) datatype.

CREATE TABLE employees
( employee_number number(10) not null,
employee_name varchar2(50) not null,
department_id number(10),
CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);

Solution:

The following ALTER TABLE statement would add a salary column to the employees table:

ALTER TABLE employees
ADD salary number(6);


Practice Exercise #3:

Based on the customers table below, add two columns - one column called contact_name that is a varchar2(50) datatype and one column called last_contacted that is a date datatype.

CREATE TABLE customers
( customer_id number(10) not null,
customer_name varchar2(50) not null,
address varchar2(50),
city varchar2(50),
state varchar2(25),
zip_code varchar2(10),
CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);

Solution:

The following ALTER TABLE statement would add the contact_name and last_contacted columns to the customers table:

ALTER TABLE customers
ADD ( contact_name varchar2(50),
last_contacted date );


Practice Exercise #4:

Based on the employees table below, change the employee_name column to a varchar2(75) datatype.

CREATE TABLE employees
( employee_number number(10) not null,
employee_name varchar2(50) not null,
department_id number(10),
CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);

Solution:

The following ALTER TABLE statement would change the datatype for the employee_name column to varchar2(75):

ALTER TABLE employees
MODIFY employee_name varchar2(75);


Practice Exercise #5:

Based on the customers table below, change the customer_name column to NOT allow null values and change the state column to a varchar2(2) datatype.

CREATE TABLE customers
( customer_id number(10) not null,
customer_name varchar2(50),
address varchar2(50),
city varchar2(50),
state varchar2(25),
zip_code varchar2(10),
CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);

Solution:

The following ALTER TABLE statement would modify the customer_name and state columns accordingly in the customers table:

ALTER TABLE customers
MODIFY ( customer_name varchar2(50) not null,
state varchar2(2) );


Practice Exercise #6:

Based on the employees table below, drop the salary column.

CREATE TABLE employees
( employee_number number(10) not null,
employee_name varchar2(50) not null,
department_id number(10),
salary number(6),
CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);

Solution:

The following ALTER TABLE statement would drop the salary column from the employees table:

ALTER TABLE employees
DROP COLUMN salary;


Practice Exercise #7:

Based on the departments table below, rename the department_name column to dept_name.

CREATE TABLE departments
( department_id number(10) not null,
department_name varchar2(50) not null,
CONSTRAINT departments_pk PRIMARY KEY (department_id)
);

Solution:

The following ALTER TABLE statement would rename the department_name column to dept_name in the departments table:

ALTER TABLE departments
RENAME COLUMN department_name to dept_name;


give 發表在 痞客邦 留言(0) 人氣()

除了寫程式之外,資料庫的應用也是蠻重要的,而SQL語法,用法大致相同,但各公司所出的資料庫還是有所差別,而ORACLE SQL給了相當多的函數應用,下面列了一些函法的名稱和用法,並且會舉幾個例子,可以直接將SQL貼到ORACLE資料庫環境下試試.

1.常用函數
1.1 字元函數
=============================================================
1.1.1 ASCII
ASCII(char)

select ASCII(’A'), ASCII(’ABC’) from dual
=============================================================
1.1.2 CHR
CHR(n [USING NCHAR_CS])

select CHR(68), CHR(68 USING NCHAR_CS) from dual
=============================================================
1.1.3 CONCAT
CONCAT(string1, string2)
兩個字串的連結, 等同於使用連接運算子( || ).

select CONCAT(’Good’,’ Morning’), ‘Good’ || ‘ Morning’ from dual
=============================================================
1.1.4 INITCAP
INITCAP(string)
將一個字串中每個單字的第一個字母, 改變為大寫, 而將其它字母變成小寫.

select INITCAP(’good MORNING’) from dual
=============================================================
1.1.5 INSTR
INSTR(string1, string2,[, n[ ,m]])
搜尋string1, 以便找到string2, 並回傳在string1 中該字元的位置,
亦即string2 在 string1 中的開始之處.

select INSTR(’easy com , easy go’, ‘easy’) from dual
select INSTR(’easy com , easy go’, ‘easy’,1,2) from dual
=============================================================
1.1.6 LENGTH
LENGTH(string)
回傳字串中的字元數量

select length(’ABCD’) from dual
select length(’ABCD長度’) from dual
=============================================================
1.1.7 LOWER, UPPER
LOWER(string)
UPPER(string)
將字串中的所有字元轉換為大(小)寫.

select lower(’AbCd’) from dual
select upper(’AbCd’) from dual
=============================================================
1.1.8 RPAD, LPAD
RPAD(string1, n[string2])
LPAD(string1, n[string2])
填補字元(空白)至第N個位置

select rpad(’ABCD’,30,’A') from dual
select lpad(’ABCD’,30,’A') from dual
select rpad(’ABCD’,30) from dual
=============================================================
1.1.9 RTRIM, LTRIM, TRIM
LTRIM(string1,[,string2])
RTRIM(string1,[,string2])
TRIM(string1,[,string2])
移除所指定的字元, (預設值空白)

select rtrim(’ ABCD ‘) from dual
select ltrim(’ ABCD ‘) from dual
select trim(’ ABCD ‘) from dual
select trim(’ ABCD ‘) from dual
SELECT LTRIM(’JJJJJeryyyyyyJJ’,'J’) FROM DUAL
=============================================================
1.1.10 REPLACE
REPLACE(string, search_string, [,replacement_string])
字串取代

select replace(’I LOVE YOU’,'LOVE’,'HATE’) from dual
select replace(’I LOVE YOU’,'LOVE’) from dual
=============================================================
1.1.11 SUBSTR
SUBSTR(string, m [, n] )
回傳一個字串的一部份, m若為負值, 用法如同right function

select substr(’abcdefghijk’,3,2) from dual
select substr(’abcdefghijk’,-3,2) from dual
select substr(’abcdefghijk’,3) from dual
=============================================================
1.1.12 TRANSLATE
TRANSLATE(string, from_string, to_string)
將一個字元組轉換成另一個字元組, 來修改字串.

select translate(’smmfrr space’,'drmfslc’,'1234567′) from dual
=============================================================

1.2 轉換函式
=============================================================
1.2.1 TO_CHAR
TO_CHAR(d [, fmt [, ‘nlsparams’] ] )
將一個日期/時間的值, 轉換為一個以字元為基礎的值.
TO_CHAR(n [, fmt [, ‘nlsparams’] ] )
將一個數值轉換為一個以字元為基礎的值.

數字格式元�
9 用來控制要被顯示之數字的有效位數
0 前導0
$ 會以一個前置的錢字號來顯示
, 在輸出中放置一個逗號
. 標記小數點
B 強迫0值被顯示為空白
S 用於一個格式字串的開始或結束處, 來顯示(+/-)值

select to_char(’1234′,’9999′) from dual => 1234
select to_char(’1234′,’99999′) from dual => 1234
select to_char(’1234′,’999′) from dual => ####

select to_char(’1234′,’0000′) from dual => 1234
select to_char(’1234′,’000000′) from dual => 001234
select to_char(’1234′,’000′) from dual => ####

select to_char(’1234′,’S0999999′) from dual
select to_char(’1234′,’0999990S’) from dual
select to_char(’1234′,’$99999′) from dual
select to_char(’00120340′,’B999999′) from dual
select to_char(’1234′,’$99,999′) from dual
select to_char(’1234′,’S09999.99′) from dual
=============================================================
1.2.2 TO_DATE
TO_DATE(string [, fmt [, ‘nlsparams’]] )
將一個日期/時間值的字元字串, 轉換為date型別的值.

日期格式元�
格式元素 函式
DAY 日的名稱(Saturday, Sunday, Monday等)
DD 月份的天
DDD 年的天
DY 天的縮寫名稱(Sat, Sun, Mon等)
HH 一天的小時
HH12 一天的小時, 同HH
HH24 一天的小時, 24小時制
MI 分鐘
MM 月份數字
MON 三個字母的月份縮寫
MONTH 完整拼出的月份名稱
Q 一年中的季
SS 秒
WW 年的週
YYYY 四位數的年
YYY 年份的最後三位數
YY 年份的最後二位數
Y 年份的最後一位數

select to_date(’2004/03/10′,’YYYY/MM/DD’) from dual
select to_date(’2004/10/03′,’YYYY/DD/MM’) from dual
select to_date(’20040310′,’YYYYMMDD’) from dual
=============================================================
1.2.3 TO_NUMBER
TO_NUMBER(string [, fmt [, ‘nlsparams’] ] )
將字元型態轉換為數值型態

select * from user_tables order by to_number(INITIAL_EXTENT)
=============================================================
1.2.4 NVL
NVL(expr1, expr2)
如果一個給定的輸入值為null時, 會回傳一個另一值, 以便使用。假如expr1是null時, nvl會回傳expr2; 否則, 它會單純地回傳expr1.

select username, nvl(to_char(lock_date),’Not Locked’) from dba_users
=============================================================
1.2.5 DECODE
DECODE (expr , search , result [ , search , result…..] [ , default ] )
一個類似IF敘述的能力。

一般用法:
SELECT name, DECODE(
plugged_in,
0, ‘Not Plugged In’,
1,’Plugged In’,
‘Invalid plugged_in value’
) plugged_in
FROM v$datafile

進階用法:
SELECT SUM(DECODE(owner,’SYS’,1,0)), SUM(DECODE(owner,’SYSTEM’,1,0))
FROM dba_objects

巢式用法:
select owner, table_name, column_name,
DECODE(data_type,
‘VARCHAR2′,’VARCHAR2 (’ || TO_CHAR(DATA_LENGTH) || ‘)’,
‘NUMBER’, decode(data_precision,
NULL, ‘NUMBER’,
‘NUMBER (’ ||
TO_CHAR(DATA_PRECISION) || ‘,’ ||
TO_CHAR(data_scale || ‘)’ )))
from dba_tab_columns
where data_type in (’VARCHAR2′,’NUMBER’)

=============================================================

1.3 數字函式=============================================================
1.3.1 ABC
ABC(n)
回傳一個數字的絕對值

select ABS(-1), ABS(1) from dual
=============================================================
1.3.2 MOD
MOD (m,n)
回傳m除以n的餘數

select MOD(18,12), MOD(30,12), MOD(30,30) from dual
=============================================================
1.3.3 SIGN
SIGN(n)
回傳一個值, 以指出n的符號.
(-1 負數, 0 數字為零, 1 正數)

select SIGN(76), SIGN(0), SIGN(-76.17) from dual
=============================================================
1.3.4 GREATEST, LEAST
GREATEST (expr [ , expr…..] )
LEAST (expr [ , expr…..] )
從所提供之引數的列表中, 回傳最大(小) 值.

select GREATEST(1,2,3) from dual
select GREATEST(’One’,'Two’) from dual
select LEAST(1,2,3) from dual
select GREATEST(TO_DATE(’05/18/2004′,’MM/DD/YYYY’),
TO_DATE(’04/01/2004′,’MM/DD/YYYY’)) from dual

1.3.5 ROUND
ROUND(n, m)
把一個值進位到所指定之特定小數點的位數.
參數:
n: 指定一個將進位的值
m:
select ROUND(123.45), ROUND(123.45,1), ROUND(123.45,-1) from dual


give 發表在 痞客邦 留言(0) 人氣()

在創建GridView控件時,必須先為GridView的每一行創建一個GridViewRow對象,創建每一行時,將引發一個 RowCreated事件;當行創建完畢,每一行GridViewRow就要綁定數據源中的數據,當綁定完成後,將引發RowDataBound事件。如果說我們可以利用RowCreated事件來控制每一行綁定的控件,那麼我們同樣可以利用RowDataBound事件來控制每一行綁定的數據,也就是讓數據如何呈現給大家。

還舉同樣的例子,在數據表中,存在性別列,上面我們用DropListDown控件的DataBounding來表示出了中文的性別,但是畢竟不太美觀,我們現在可以利用Label控件和RowDataBound事件來實現完美的中文性別顯示。RowDataBound,

首先,還是把性別列,設置為模板列,並添加一個Label控件,將Label控件綁定到數據源的性別段,然後我們在GridView控件屬性的事件列表中雙擊RowDataBound,生成如下事件:

Example:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

{

//判斷當前行是否是數據行

if (e.Row.RowType == DataControlRowType.DataRow)

{ //用FindControl方法找到模板中的Label控件

Label lb1= (Label)e.Row.FindControl("Label1");

//因為RowDataBound是發生在數據綁定之後,所以我們可以

//判斷Label綁定的數據,如果是True,就更改其text屬性為男

if (lb1.Text== "True")

lb1.Text = "男";

else

lb1.Text = "female";

}

}


give 發表在 痞客邦 留言(0) 人氣()

一個月的第一天
代碼 (雙擊代碼複製到粘貼板)

SELECT to_date(to_char(SYSDATE,'yyyy-mm')||'-01','yyyy-mm-dd')
FROM dual


sysdate 為數據庫服務器的當前系統時間。
to_char 是將日期型轉為字符型的函數。
to_date 是將字符型轉為日期型的函數,一般使用 yyyy-mm-dd hh24:mi:ss格式,當沒有指定時間部分時,則默認時間為 00:00:00

dual 表為sys用戶的表,這個表僅有一條記錄,可以用於計算一些表達式,如果有好事者用 sys 用戶登錄系統,然後在 dual 表增加了記錄的話,那麼系統99.999%不能使用了。為什麼使用的時候不用 sys.dual 格式呢,因為 sys 已經為 dual 表建立了所有用戶均可使用的別名。


一年的第一天
代碼 (雙擊代碼複製到粘貼板)

SELECT to_date(
to_char(SYSDATE,'yyyy')||'-01-01','yyyy-mm-dd'
)
FROM dual


季度的第一天
代碼 (雙擊代碼複製到粘貼板)

SELECT to_date(
to_char(SYSDATE,'yyyy-')||
lpad(floor(to_number(to_char(SYSDATE,'mm'))/3)*3+1,2,'0')||
'-01',
'yyyy-mm-dd')
FROM dual


floor 為向下取整
lpad 為向左使用指定的字符擴充字符串,這個擴充字符串至2位,不足的補'0'。

當天的半夜
SELECT trunc(SYSDATE)+1-1/24/60/60
FROM dual

trunc 是將 sysdate 的時間部分截掉,即時間部分變成 00:00:00
Oracle中日期加減是按照天數進行的,所以 +1-1/24/60/60 使時間部分變成了 23:59:59。
Oracle 8i 中僅支持時間到秒,9i以上則支持到 1/100000000 秒。

上個月的最後一天
代碼 (雙擊代碼複製到粘貼板)

SELECT trunc(last_day(add_months(SYSDATE,-1)))+1-1/24/60/60
FROM dual


add_months 是月份加減函數。
last_day 是求該月份的最後一天的函數。

本年的最後一天
代碼 (雙擊代碼複製到粘貼板)

SELECT trunc(
last_day(to_date(to_char(SYSDATE,'yyyy')||'-12-01','yyyy-mm-dd'))
)+1-1/24/60/60
FROM dual


本月的最後一天
代碼 (雙擊代碼複製到粘貼板)

select trunc(last_day(sysdate))+1-1/24/60/60
from dual



本月的第一個星期一
代碼 (雙擊代碼複製到粘貼板)

SELECT next_day(
to_date(to_char(SYSDATE,'yyyy-mm')||'-01','yyyy-mm-dd'),
'星期一'
)
FROM dual

next_day 為計算從指定日期開始的第一個符合要求的日期,這裡的'星期一'將根據NLS_DATE_LANGUAGE的設置稍有不同。

去掉時分秒
代碼 (雙擊代碼複製到粘貼板)

select trunc(sysdate)
from dual


顯示星期幾
代碼 (雙擊代碼複製到粘貼板)

SELECT to_char(SYSDATE,'Day')
FROM dual


取得某個月的天數
代碼 (雙擊代碼複製到粘貼板)

SELECT trunc(last_day(SYSDATE))-
to_date(to_char(SYSDATE,'yyyy-mm')||'-01','yyyy-mm-dd')+
1
FROM dual


判斷是否閏年
代碼 (雙擊代碼複製到粘貼板)

SELECT decode(
to_char(last_day(to_date(to_char(SYSDATE,'yyyy')||'-02-01','yyyy-mm-dd')),'dd'),
'28','平年','閏年'
)
FROM dual


一個季度多少天
代碼 (雙擊代碼複製到粘貼板)

SELECT last_day(to_date(
to_char(SYSDATE,'yyyy-')||
lpad(floor(to_number(to_char(SYSDATE,'mm'))/3)*3+3,2,'0')||
'-01','yyyy-mm-dd'
)
)
-
to_date(
to_char(SYSDATE,'yyyy-')||
lpad(floor(to_number(to_char(SYSDATE,'mm'))/3)*3+1,2,'0')||
'-01','yyyy-mm-dd')
+1
FROM dual


give 發表在 痞客邦 留言(0) 人氣()

give 發表在 痞客邦 留言(0) 人氣()

NetBeans中使用DataSource連接Derby


  1. 登入Glassfish主控台,建立JDBC連線區(Connection Pool)

    點選新增後,會看到步驟一,這邊設定
    Connection Pool的名稱、資源類型及Database Vendor。這邊選擇內建的JavaDB做為範例。

    步驟二是Connection Pool的屬性設定,如果沒有特別需求,預設值就好


    最下方的屬性位置,填入相關資料,包括
    ServerNameDatabaseNameURL(URL需要手動增加)

    存檔離開。


  2. 建立JDBC資源,選擇剛剛建立的ConnectionPoolTest,存檔。

     

    Web Container的部分到此處設定完成,接下來設定web.xml

  3. 開啟web.xml,選擇Reference,到Resource Reference的地方新增

    Resource Name的地方要和Web Container上的相同(即設定成jdbc/sample2)

  4. 建立測試用的jsp檔案如下(使用JSTL)
    <%--
        Document   : jdbc_jstl
        Created on : 2008/11/6, 上午 01:02:39
        Author     : shen
    --%>

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
      
       <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
       <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
       <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <sql:setDataSource dataSource="jdbc/sample2" />
            <sql:query var="result" >
                select NAME from APP.CUSTOMER
            </sql:query>
            <c:forEach items="${result.rows}" var="row" >
                ${row.NAME}<br>
            </c:forEach>
        </body>
    </html>

 

  1. 結果

 



give 發表在 痞客邦 留言(0) 人氣()

設定Glassfish Form Authentication


  1. 建立Realm
    從左方功能表,選擇配置 -> 範圍,然後點右方新增



    使用不同的Realm會有不同的輸入

    若是選擇用File的方式來儲存user/password,檔案會放在
    C:Program Files\glassfish-v2ur2\domains\domain1\config
    格式類似
    admin;{SSHA}u48psZvPo1A9i0bMymS+iLDcSRF71ZTP+iOk7A==;

  2. 建立user
    點選管理使用者

    點選新增,輸入帳號密碼

  3. NetBeans內開啟web.xml,選擇Login的方式

    即使選擇Form,上方的Realm Name還是要填,在Form的地方選擇Login PageError Page

    其中,login2.html裡面,j_security_checkj_usernamej_password三者都是預設值,不能修改。

  4. 建立Security Role

  5. 建立Security Constraints,名稱的地方可自訂
    Web
    Resource Collection的地方輸入

    將下方的Enable Authentication Constraint打勾,並把AdminRole加入

  6. 在專案的WEB-INF下,開啟sun-web.xml。選擇Security,這邊會看到剛剛在Step4建立的Security Role。點選右方的Add Principal,加入Step2建立的user。這裡的user就是可以存取AdminConstraintuser

  7. save all,重新Deploy project

因為AdminConstraint是對整個Web Application做限制,所以只要開啟新的瀏覽器輸入網址,都會看到登入畫面。這邊的user/password就是Glassfish中對WebApplication1所建立的userpassword

 

若登入失敗,會導入error page


give 發表在 痞客邦 留言(0) 人氣()

三分鐘建立JSP自訂標籤(使用NetBeans6.1)




  1. 建立TLD


  2. 建立Tag
    Handler



  3. Tag
    HandlerotherDoEndTagOperations()
    地方建立相關程式


  4. 建立JSP檔案


  5. 看結果




give 發表在 痞客邦 留言(0) 人氣()

** 以下是個人對於JavaBeans的心得與認知,定義的部份是根據書本上來的,某些用法是自己心得補充,沒有驗證的部份會採用灰色字體來表示,若你看到了我這篇文章,那麼請你針對灰色字體的部份存疑,若你找到了任何更加正確的資料,提供讓我知道我會非常感激你,但是請提供相關網址或參考來源。 **

JavaBeans最早是為了提供IDE開發環境的元件而定義出來的標準規範。JavaBeans在維護資料屬性的部分有其限制,符合這些限制的Class,搭配Reflection機制,可以進行自動化編譯、取用。

為了達到這樣的目的,JavaBeans有著一些定義和規範,滿足這三種規範的Class才能稱其為JavaBeans:

  • 必須實作 java.io.Serializable 和 java.io.Externalizable 兩個介面
  • 提供一個沒有引數的建構子
  • private屬性必須有相對應的 set/get 方法,並使用規定的命名方式

若是設計IDE開發環境內的元件,還必須繼承java.awt.Component。

java.io.Serializable 和 java.io.Externalizable 兩個介面只需實作其中之一,說實作也並非恰當,因為這兩者並無包含任何該實作的method,只要在class宣告之初加上implements Serializable 或是 implements Extrernalizable 即可,之後 JVM 自然會進行相關的處理,像是透過儲存機制在執行時將已初始化的beans從硬碟(或網路)中儲存和載入以保持永續性(persistence)。

永續性的意思是,任何重要的狀態可以用一致性的方式來儲存並取回,無論何時取用都能確保取回的reference是正確的狀態。

永續性對某些需要負載平衡或是failover的環境下非常重要,因為在這些環境中,運行於某個server上的reference,可能會被transfer到另外一台server上去執行,transfer過去的reference,必須讓接手的server知道本身的狀態,否則會造成資料的錯亂。

加上Serializable屬性的Class就是表示能夠將目前狀態儲存於檔案或是網路串流中,並可透過相同的機制來重建(反連續性,deserialization)。

並非所有屬性都需要正確的重建,不需要重建的屬性或method,則會加上 transient 來表示,所有有修飾字 transient 的屬性或method,都會在 deserialization 的過程中被重新建立,所以他們的值有可能與先前所建構的值不同。

在設計 JavaBeans 的屬性時,最好能先思考一下每一個變數在進行 transfer 的的各種狀況,若是該變數無法被正確的重建,最好能加上 transient 修飾。

在JSP檔案中使用beans時,透過<jsp:useBean>標籤來實現,id屬性是initial的名稱,在預設的生命週期(page)
內,可以透過id設定的名稱來存取,如下面範例

<jsp:useBean id="today" class="java.util.Date" />
<%= today.getTime() %>

 

give 發表在 痞客邦 留言(1) 人氣()

give 發表在 痞客邦 留言(0) 人氣()

Step0. 安裝Python
首先, 要先安裝Python(當然....)


Step1. 安裝easy_install
下載ez_setup.py, 並安裝, 參考
http://peak.telecommunity.com/DevCenter/EasyInstall#installing-easy-install


Step2. 下載TurboGears並安裝
C:easy_install TurboGears
(參考: http://www.ibm.com/developerworks/cn/linux/l-turbogears/index.html )

若無法執行easy_install, 檢查一下系統PATH變數
On Windows, an easy_install.exe launcher will also be installed, so that you can just type easy_install as long as it's on your PATH. If typing easy_install at the command prompt doesn't work, check to make sure your PATH includes the appropriate C:\Python2X\Scripts directory.


Step3: 執行tg-admin
C:>tg-admin

TurboGears 1.0.5 command line interface

Usage: C:Python25Scriptstg-admin-script.py [options]

Options:
-c CONFIG --config=CONFIG Config file to use
-e EGG_SPEC --egg=EGG_SPEC Run command on given Egg

Commands:
i18n Manage i18n data
info Show version info
quickstart Create a new TurboGears project
shell Start a Python prompt with your database available
sql Run the database provider manager
toolbox Launch the TurboGears Toolbox
update Update an existing turbogears project

give 發表在 痞客邦 留言(0) 人氣()

文章取自Eclipse上的wiki
http://wiki.eclipse.org/index.php/Connecting_to_SQLite

節錄如下

1) Download the SQLite drivers from: [1]. The actual zip file with the driver is at [2]. Expand the zip somewhere locally and note the location.


2) Put the sqlite_jni.dll from the zip into your JRE's bin directory. The driver requires this file to be in the java library path.


3) In Eclipse with DTP 1.0 installed (preferably the final build or a nightly build dated 110806 or later), go to the Preferences (Window->Preferences) and select the Connectivity->Driver Definitions page.


4) Select the "Generic JDBC" category in the Available Driver Definitions tree and click "Add...".


5) Select "Generic JDBC Driver->Generic JDBC Driver" in the Available Driver Templates tree. Give the new generic JDBC driver a name like "javasqlite JDBC driver". Click OK.


6) Click "Add Jar/Zip" and select the sqlite.jar from the driver zip you expanded in step 1. Click Open.


7) In the Properties table, select the Driver Class property and click the "..." button. If the jar is accessible, you will see a dialog appear with at lease one class in the list. Select "SQLite.JDBCDriver". Click OK.


8) Also in the Properties table, select the Driver URL property and type the following: jdbc:sqlite:/DRIVE:/dirA/dirB/dbfile


9) Click OK on the Edit Driver Definition dialog. You should see your new driver appear in the driver list on the Driver Definitions preference page.


10) Click OK to close the Preferences dialog.


11) If the Data Source Explorer is not open, open the Connectivity->Data Source Explorer view from the Window->Show View menu or open the Database Development perspective from the Window->Open Perspective.


12) In the Data Source Explorer, right-click on the Databases category and select New...


13) In the New Connection Profile wizard's Wizard Selection Page, choose the SQL Model-JDBC Connection entry in the list and click Next.


14) Give your new profile a name like "SQLiteTestDB". Click Next.


15) In the "Select a driver from the drop-down" combo box, select your new SQLite driver definition. Modify the file path in the sample URL to match the path to your local SQLite database.


16) Click "Test Connection" to verify you can connect to your database.


17) Click Finish to create the profile.


18) In the Data Source Explorer, right-click on the new profile and select Connect. You should see content appear in the tree beneath the profile. Browse through your database to view available tables and their columns.


JDBC Driver載點
http://www.ch-werner.de/javasqlite/javasqlite-20080420-win32.zip

Code snippet:
Connection conn = null;
SQLite.Database db = null;
try {
Class.forName("SQLite.JDBCDriver").newInstance();
conn = DriverManager.getConnection("jdbc:sqlite:/blabla");
java.lang.reflect.Method m =
conn.getClass().getMethod("getSQLiteDatabase", null);
db = (SQLite.Database) m.invoke(conn, null);
} catch (Exception e) {

}

在Netbeans中設定Connection
  1. 先在Global Library中建立SQLite的項目
  2. 在Project中引入這個Library
  3. 在Netbeans中移到Services頁籤,建立一個新的JDBC Driver profile
  4. 然後建立一個Connection,選擇剛剛建立的profile,Database URL的設定如下
  5. 完工,驗證一下




give 發表在 痞客邦 留言(0) 人氣()