2014年7月11日 星期五

HTML 按下Enter預設按鈕

下方為簡單的HTML格式,包含3個button、1個text, 前兩個按鈕為隱藏樣式,若focus在text裡,按下Enter, 網頁預設會執行最接近的submit button(Button1不是subbmit button),所以是Button2。
<!DOCTYPE html>
<html>
<form>
<body>

  <input type='button' value='Button1' onclick='alert("Button1");' style='display:none'/>
  <input type='submit' value='Button2' onclick='alert("Button2");' style='display:none'/>
  <input type='text'/>
  <input type='submit' value='Button3' onclick='alert("Button3");'/>

</body>
</form>
</html>

Oracle 動態塞值到 IN Clause

解決下方情況

SELECT * FROM TableName
WHERE TUSER IN ('A','B','C')
--'A','B','C'為動態產生

1)新增類型

create or replace 
type ttype is table of varchar2(255)

2)新增函數

create or replace 
Function FindRLP RETURN ttype
 IS
   rtn ttype := ttype();
   idx integer := 0;
 BEGIN
  for r in (SELECT TUSER FROM UR_UIR WHERE RLNO='G05')
   loop
      rtn.extend;
      idx := idx+1;
      rtn(idx) := r.TUSER;
   end loop;
   return rtn;
 END;

使用方式

SELECT * FROM TableName
WHERE TUSER IN (SELECT * FROM TABLE(FindRLP))

2014年7月9日 星期三

Ajax使用Get method產生Cache問題

例如:利用Ajax呼叫.ashx時,使用Get method,若每次呼叫網址不變,則會有Cache問題

http://www.w3schools.com/tags/ref_httpmethods.asp

  • GET requests can be cached
  • POST requests are never cached

2014年7月5日 星期六

.NET存取Oracle資料庫相關Provider說明,ODBC、OleDb、OracleClient、ODAC

使用時確認各Provider支援的Oracle版本


1).NET Framework Data Provider for ODBC:

(Open Database Connectivity,開放資料庫互連)提供了標準的API方法來存取資料庫管理系統。尚未有ODBC之前,若要開發資料庫應用程式,必須使用資料庫廠商隨資料庫產品一同發行的一些工具集來存取資料庫。微軟於1992年發表了ODBC。
using System.Data;
using Microsoft.Data.Odbc;

     {
       OdbcConnection cn;
       OdbcCommand cmd;
       string MyString;

       MyString="Select * from Customers";

       cn= new OdbcConnection("Driver={Microsoft ODBC for Oracle};Server=myOracleServer;UID=spring;PWD=spring;");

       cmd=new OdbcCommand(MyString,cn);
       cn.Open();

       MessageBox.Show("Connected");

       cn.Close();
     }

2).NET Framework Data Provider for OLE DB:

是微軟為以統一方式存取不同型別的資料儲存設計的一種應用程式介面,是一組用元件物件模型(COM)實作的介面。OLE DB Provider for Oracle Client,呼叫 Oracle 資料庫的 OLE DB 資料提供者,通常由 Oracle 原廠提供。
using System.Data;
using System.Data.OleDb;

        {
            OleDbConnection cn;
            OleDbCommand cmd;
            string MyString;

            MyString = "Select * from Customers";

            cn = new OleDbConnection("Data Source=myOracleServer;Provider=OraOLEDB.Oracle.1;User Id=spring;Password=spring");

            cmd= new OleDbCommand(MyString,cn);
            cn.Open();

            MessageBox.Show("Connected");

            cn.Close();
        }

3).NET Framework Data Provider for Oracle:

支援Oracle用戶端軟體8.1.7(含)以後版本。Visual Studio 2010後建議使用ODP.NET。
(Microsoft:The types in System.Data.OracleClient are deprecated)
using System.Data;
using System.Data.OracleClient;

         {

            OracleConnection cn;
            OracleCommand cmd;
            string MyString;

            MyString = "Select * from Customers";

            cn = new OracleConnection("Data Source=myOracleServer;User Id=spring;Password=spring");

            cmd = new OracleCommand(MyString, cn);
            cn.Open();

            MessageBox.Show("Connected");

            cn.Close();

         }

4)ODAC:

(ODP.NET:Oracle Data Provider for .NET)不同版本 Visual Studio 須搭配不同ODAC(Oracle Data Access Components)

Web.config
<add name="Default" connectionString="Data Source=myOracleServer;User Id=spring;Password=spring;providerName="Oracle.DataAccess.Client"/>
using Oracle.DataAccess.Client;

         using (OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString))
         {
            OracleCommand cmd;
            try
            {
              conn.Open();
              cmd = new OracleCommand();
              cmd.Connection = conn;
              cmd.CommandText = "";

              cmd.ExecuteNonQuery();
             }
             catch (Exception ex)
             {}
             //使用using不需要close與dispose
             //finally
             //{
             //    cmd.Dispose();
             //    conn.Close();
             //    conn.Dispose();
             //}    
          }

2014年7月2日 星期三

SQL SERVER 編碼


SQL SERVER各種欄位型態編碼

select data_type, character_set_catalog, character_set_schema, character_set_name,collation_catalog, collation_schema, collation_name, count(*) count from information_schema.columns group by data_type, character_set_catalog, character_set_schema, character_set_name,collation_catalog, collation_schema, collation_name;


編碼說明(In SQL SERVER)

  • Big5(cp950) : 中文字占 2Byte 
  • Unicode(UTF-16) : 中文字占 2Byte
  • UTF-8 : 中文字占 3Byte 
例:
varchar(2) : 2Byte,可放1個中文字
nvarchar(2) : 4Byte,可放2個中文字