<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    <select id="SelectEemployee" parameterClass="string" resultMap = "employee-result">

               select * from employee

    //動態SQL語句

                <dynamic prepend="WHERE">

                   <isParameterPresent>

                         emp_id = #value#

                   </isParameterPresent>

                </dynamic>

           </select>

        </statements>

    </sqlMap>     

    /*動態SQL的寫法:

    開始 <dynamic

    條件成立時前面要加的字符串 prepend ="字符串">

    <屬性關鍵字 (見下表)

    prepend="字符串"

    判斷條件的對象屬性名 property="字符串"

    如果是屬性關鍵字是比較條件時,字符串存放要比較的值compareValue="字符串">

    要顯示的條件名

    </屬性關鍵字>

    結束</dynamic>

    */

    /*動態SQL的參數有

    屬性關鍵字

    含義

    <isEqual>

    如果參數相等于值則查詢條件有效。

    <isNotEqual>

    如果參數不等于值則查詢條件有效。

    <isGreaterThan>

    如果參數大于值則查詢條件有效。

    <isGreaterEqual>

    如果參數等于值則查詢條件有效。

    <isLessEqual>

    如果參數小于值則查詢條件有效。如下所示:

    <isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” >

    ADOLESCENT = ‘TRUE’

    </isLessEqual>

    <isPropertyAvailable>

    如果參數有使用則查詢條件有效。

    <isNotPropertyAvailable>

    如果參數沒有使用則查詢條件有效。

    <isNull>

    如果參數為NULL則查詢條件有效。

    <isNotNull>

    如果參數不為NULL則查詢條件有效。

    <isEmpty>

    如果參數為空則查詢條件有效。

    <isNotEmpty>

    如果參數不為空則查詢條件有效。參數的數據類型為CollectionString 時參數不為NULL或“”。如下所示:

    <isNotEmpty prepend=”AND” property=”firstName” >

    FIRST_NAME=#firstName#

    </isNotEmpty>

    <isParameterPresent>

    如果參數類不為NULL則查詢條件有效。

    <isNotParameterPresent>

    Checks to see if the parameter object is not present (null). Example Usage:

    <isNotParameterPresent prepend=”AND”>

    EMPLOYEE_TYPE = ‘DEFAULT’

    </isNotParameterPresent>

     

    posted @ 2008-04-17 11:30 重歸本壘(Bing) 閱讀(6420) | 評論 (4)編輯 收藏
     

    JS提供兩個截取字符串的方法,分別是:slice()和substring()
    slice和substring都可以接受一個或兩個參數,第1個參數是獲取要截取的字符串的直始位置,第2個參數如果不為空則是獲取要截取的字符串的結束位置的前一位(也就是說獲取的終點位置不在返回值內),為空表示截取到整個字符串的最后一個字符。
    我們來看下兩種方法的用法
    注意:字符串的位數都是從0開始
    <script language="javascript">
    var stmp = "rcinn.cn";
    //使用一個參數
    alert(stmp.slice(3));//從第4個字符開始,截取到最后個字符;返回"nn.cn"
    alert(stmp.substring(3));//從第4個字符開始,截取到最后個字符;返回"nn.cn"
    //使用兩個參數
    alert(stmp.slice(1,5))//從第2個字符開始,到第5個字符;返回"cinn"
    alert(stmp.substring(1,5));//從第2個字符開始,到第5個字符;返回"cinn"
    //如果只用一個參數并且為0的話,那么返回整個參數
    alert(stmp.slice(0));//返回整個字符串
    alert(stmp.substring(0));//返回整個字符串
    //那如何只反回第一個字符呢,可以用其它的函數,那如果一定要用這兩個方法的話就指定第一個參數為0,第二個參數為1,看下面的例子
    alert(stmp.slice(0,1));//返回"r"
    alert(stmp.substring(0,1));//返回"r"
    //在上面的例子中我們可以看出slice()和substring()的用法是相同的,返回的值也是一樣的,但當參數為負數時,他們的返回值卻不一樣,看下面的例子
    alert(stmp.slice(2,-5));//返回"i"
    alert(stmp.substring(2,-5));//返回"rc"
    //從上面兩個例子可以看出slice(2,-5)實際上是slice(2,3),負5轉換成正3;而substring(2,-5)實際上是substring(2,0),負數轉換為0,swubstring總是把最小的數作為起始位置。
    </script>
    本文轉自可可在線(http://www.rcinn.cn),詳細出處參考:http://www.rcinn.cn/news.asp?id=646

     

    posted @ 2008-04-14 10:07 重歸本壘(Bing) 閱讀(19764) | 評論 (0)編輯 收藏
     
         摘要: //打開模式對話框 function doSelectUser(txtId) {       strFeatures="dialogWidth=500px;dialogHeight=360px;center=yes;middle=yes ;help=no;status=no;scroll=no";    ...  閱讀全文
    posted @ 2008-03-21 15:13 重歸本壘(Bing) 閱讀(849) | 評論 (0)編輯 收藏
     
    目錄:
    1:js 字符串長度限制、判斷字符長度 、js限制輸入、限制不能輸入、textarea 長度限制
    2.:js判斷漢字、判斷是否漢字 、只能輸入漢字
    3:js判斷是否輸入英文、只能輸入英文
    4:js只能輸入數字,判斷數字、驗證數字、檢測數字、判斷是否為數字、只能輸入數字
    5:只能輸入英文字符和數字
    6: js email驗證 、js 判斷email 、信箱/郵箱格式驗證
    7:js字符過濾,屏蔽關鍵字
    8:js密碼驗證、判斷密碼
    2.1: js 不為空、為空或不是對象 、判斷為空 、判斷不為空
    2.2:比較兩個表單項的值是否相同
    2.3:表單只能為數字和"_",
    2.4:表單項輸入數值/長度限定
    2.5:中文/英文/數字/郵件地址合法性判斷
    2.6:限定表單項不能輸入的字符
    2.7表單的自符控制
    2.8:form文本域的通用校驗函數

     

     

     

     

     

     

    1. 長度限制
    <script>
    function test()
    {
    if(document.a.b.value.length>50)
    {
    alert("不能超過50個字符!");
    document.a.b.focus();
    return false;
    }
    }
    </script>
    <form name=a onsubmit="return test()">
    <textarea name="b" cols="40" wrap="VIRTUAL" rows="6"></textarea>
    <input type="submit" name="Submit" value="check">
    </form>

    2. 只能是漢字
    <input onkeyup="value="/oblog/value.replace(/[^u4E00-u9FA5]/g,'')">

    3." 只能是英文
    <script language=javascript>
    function onlyEng()
    {
    if(!(event.keyCode>=65&&event.keyCode<=90))
    event.returnvalue=false;
    }
    </script>

    <input onkeydown="onlyEng();">

    4. 只能是數字
    <script language=javascript>
    function onlyNum()
    {
    if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
    //考慮小鍵盤上的數字鍵
    event.returnvalue=false;
    }
    </script>

    <input onkeydown="onlyNum();">

    5. 只能是英文字符和數字
    <input onkeyup="value="/oblog/value.replace(/[W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))">

    6. 驗證油箱格式
    <SCRIPT LANGUAGE=javascript RUNAT=Server>
    function isEmail(strEmail) {
    if (strEmail.search(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/) != -1)
    return true;
    else
    alert("oh");
    }
    </SCRIPT>
    <input type=text onblur=isEmail(this.value)>

    7. 屏蔽關鍵字(這里屏蔽***和****)
    <script language="javascript1.2">
    function test() {
    if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0)){
    alert(":)");
    a.b.focus();
    return false;}
    }
    </script>
    <form name=a onsubmit="return test()">
    <input type=text name=b>
    <input type="submit" name="Submit" value="check">
    </form>

    8. 兩次輸入密碼是否相同
    <FORM METHOD=POST ACTION="">
    <input type="password" id="input1">
    <input type="password" id="input2">
    <input type="button" value="test" onclick="check()">
    </FORM>
    <script>
    function check()
    {
    with(document.all){
    if(input1.value!=input2.value)
    {
    alert("false")
    input1.value = "";
    input2.value = "";
    }
    else document.forms[0].submit();
    }
    }
    </script>
    夠了吧 :)
    屏蔽右鍵 很酷
    oncontextmenu="return false" ondragstart="return false" onselectstart="return false"
    加在body中




    2.1 表單項不能為空

    <script language="javascript">
    <!--
    function CheckForm()
    {
    if (document.form.name.value.length == 0) {
    alert("請輸入您姓名!");
    document.form.name.focus();
    return false;
    }
    return true;
    }
    -->
    </script>

    2.2 比較兩個表單項的值是否相同

    <script language="javascript">
    <!--
    function CheckForm()
    if (document.form.PWD.value != document.form.PWD_Again.value) {
    alert("您兩次輸入的密碼不一樣!請重新輸入.");
    document.ADDUser.PWD.focus();
    return false;
    }
    return true;
    }
    -->
    </script>

    2.3 表單項只能為數字和"_",用于電話/銀行帳號驗證上,可擴展到域名注冊等

    <script language="javascript">
    <!--
    function isNumber(String)
    {
    var Letters = "1234567890-"; //可以自己增加可輸入值
    var i;
    var c;
    if(String.charAt( 0 )=='-')
    return false;
    if( String.charAt( String.length - 1 ) == '-' )
    return false;
    for( i = 0; i < String.length; i ++ )
    {
    c = String.charAt( i );
    if (Letters.indexOf( c ) < 0)
    return false;
    }
    return true;
    }
    function CheckForm()
    {
    if(! isNumber(document.form.TEL.value)) {
    alert("您的電話號碼不合法!");
    document.form.TEL.focus();
    return false;
    }
    return true;
    }
    -->
    </script>


    2.4 表單項輸入數值/長度限定

    <script language="javascript">
    <!--
    function CheckForm()
    {
    if (document.form.count.value > 100 || document.form.count.value < 1)
    {
    alert("輸入數值不能小于零大于100!");
    document.form.count.focus();
    return false;
    }
    if (document.form.MESSAGE.value.length<10)
    {
    alert("輸入文字小于10!");
    document.form.MESSAGE.focus();
    return false;
    }
    return true;
    }
    //-->
    </script>

    2.5 中文/英文/數字/郵件地址合法性判斷

    <SCRIPT LANGUAGE="javascript">
    <!--

    function isEnglish(name) //英文值檢測
    {
    if(name.length == 0)
    return false;
    for(i = 0; i < name.length; i++) {
    if(name.charCodeAt(i) > 128)
    return false;
    }
    return true;
    }

    function isChinese(name) //中文值檢測
    {
    if(name.length == 0)
    return false;
    for(i = 0; i < name.length; i++) {
    if(name.charCodeAt(i) > 128)
    return true;
    }
    return false;
    }

    function isMail(name) // E-mail值檢測
    {
    if(! isEnglish(name))
    return false;
    i = name.indexOf(" at ");
    j = name dot lastIndexOf(" at ");
    if(i == -1)
    return false;
    if(i != j)
    return false;
    if(i == name dot length)
    return false;
    return true;
    }

    function isNumber(name) //數值檢測
    {
    if(name.length == 0)
    return false;
    for(i = 0; i < name.length; i++) {
    if(name.charAt(i) < "0" || name.charAt(i) > "9")
    return false;
    }
    return true;
    }

    function CheckForm()
    {
    if(! isMail(form.Email.value)) {
    alert("您的電子郵件不合法!");
    form.Email.focus();
    return false;
    }
    if(! isEnglish(form.name.value)) {
    alert("英文名不合法!");
    form.name.focus();
    return false;
    }
    if(! isChinese(form.cnname.value)) {
    alert("中文名不合法!");
    form.cnname.focus();
    return false;
    }
    if(! isNumber(form.PublicZipCode.value)) {
    alert("郵政編碼不合法!");
    form.PublicZipCode.focus();
    return false;
    }
    return true;
    }
    //-->
    </SCRIPT>

    2.6 限定表單項不能輸入的字符

    <script language="javascript">
    <!--

    function contain(str,charset)// 字符串包含測試函數
    {
    var i;
    for(i=0;i<charset.length;i++)
    if(str.indexOf(charset.charAt(i))>=0)
    return true;
    return false;
    }

    function CheckForm()
    {
    if ((contain(document.form.NAME.value, "%()><")) || (contain(document.form.MESSAGE.value, "%()><")))
    {
    alert("輸入了非法字符");
    document.form.NAME.focus();
    return false;
    }
    return true;
    }
    //-->
    </script>

    1. 檢查一段字符串是否全由數字組成
    ---------------------------------------
    <script language="Javascript"><!--
    function checkNum(str){return str.match(/D/)==null}
    alert(checkNum("1232142141"))
    alert(checkNum("123214214a1"))
    // --></script>

    2. 怎么判斷是否是字符
    ---------------------------------------
    if (/[^x00-xff]/g.test(s)) alert("含有漢字");
    else alert("全是字符");

    3. 怎么判斷是否含有漢字
    ---------------------------------------
    if (escape(str).indexOf("%u")!=-1) alert("含有漢字");
    else alert("全是字符");

    4. 郵箱格式驗證
    ---------------------------------------
    //函數名:chkemail
    //功能介紹:檢查是否為Email Address
    //參數說明:要檢查的字符串
    //返回值:0:不是 1:是
    function chkemail(a)
    { var i=a.length;
    var temp = a.indexOf('@');
    var tempd = a.indexOf('.');
    if (temp > 1) {
    if ((i-temp) > 3){
    if ((i-tempd)>0){
    return 1;
    }

    }
    }
    return 0;
    }

    5. 數字格式驗證
    ---------------------------------------
    //函數名:fucCheckNUM
    //功能介紹:檢查是否為數字
    //參數說明:要檢查的數字
    //返回值:1為是數字,0為不是數字
    function fucCheckNUM(NUM)
    {
    var i,j,strTemp;
    strTemp="0123456789";
    if ( NUM.length== 0)
    return 0
    for (i=0;i<NUM.length;i++)
    {
    j=strTemp.indexOf(NUM.charAt(i));
    if (j==-1)
    {
    //說明有字符不是數字
    return 0;
    }
    }
    //說明是數字
    return 1;
    }

    6. 電話號碼格式驗證
    ---------------------------------------
    //函數名:fucCheckTEL
    //功能介紹:檢查是否為電話號碼
    //參數說明:要檢查的字符串
    //返回值:1為是合法,0為不合法
    function fucCheckTEL(TEL)
    {
    var i,j,strTemp;
    strTemp="0123456789-()# ";
    for (i=0;i<TEL.length;i++)
    {
    j=strTemp.indexOf(TEL.charAt(i));
    if (j==-1)
    {
    //說明有字符不合法
    return 0;
    }
    }
    //說明合法
    return 1;
    }

    7. 判斷輸入是否為中文的函數
    ---------------------------------------
    function ischinese(s){
    var ret=true;
    for(var i=0;i<s.length;i++)
    ret=ret && (s.charCodeAt(i)>=10000);
    return ret;
    }

    8. 綜合的判斷用戶輸入的合法性的函數
    ---------------------------------------
    <script language="javascript">
    //限制輸入字符的位數開始
    //m是用戶輸入,n是要限制的位數
    function issmall(m,n)
    {
    if ((m<n) && (m>0))
    {
    return(false);
    }
    else
    {return(true);}
    }

    9. 判斷密碼是否輸入一致
    ---------------------------------------
    function issame(str1,str2)
    {
    if (str1==str2)
    {return(true);}
    else
    {return(false);}
    }

    10. 判斷用戶名是否為數字字母下滑線
    ---------------------------------------
    function notchinese(str){
    var reg=/[^A-Za-z0-9_]/g
    if (reg.test(str)){
    return (false);
    }else{
    return(true); }
    }

    2.8. form文本域的通用校驗函數
    ---------------------------------------
    作用:檢測所有必須非空的input文本,比如姓名,賬號,郵件地址等等。
    該校驗現在只針對文本域,如果要針對form里面的其他域對象,可以改變判斷條件。

    使用方法:在要檢測的文本域中加入title文字。文字是在提示信息,你要提示給用戶的該字段的中文名。比如要檢測用戶名
    html如下<input name="txt_1" title="姓名">,當然,最好用可視化工具比如dreamweaver什么的來編輯域。
    如果要檢測數字類型數據的話,再把域的id統一為sz.
    javascript判斷日期類型比較麻煩,所以就沒有做日期類型校驗的程序了.高手可以補充。

    程序比較草,只是提供一個思路。拋磚引玉! :)
    哦,對了,函數調用方法:< form onsubmit="return dovalidate()">

    function dovalidate()
    {
    fm=document.forms[0] //只檢測一個form,如果是多個可以改變判斷條件
    for(i=0;i<fm.length;i++)
    {
    //檢測判斷條件,根據類型不同可以修改
    if(fm[i].tagName.toUpperCase()=="INPUT" &&fm[i].type.toUpperCase()=="TEXT" && (fm[i].title!=""))

    if(fm[i].value="/blog/="")//
    {
    str_warn1=fm[i].title+"不能為空!";
    alert(str_warn1);
    fm[i].focus();
    return false;
    }
    if(fm[i].id.toUpperCase()=="SZ")//數字校驗
    {
    if(isNaN(fm[i].value))
    { str_warn2=fm[i].title+"格式不對";
    alert(str_warn2);
    fm[i].focus();
    return false;
    }
    }
    }
    return true;
    }

    只能是漢字<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')">   只能是英文字母<script language=javascript>
    function onlyEng()
    {
    if(!(event.keyCode>=65&&event.keyCode<=90))
        event.returnValue=false;
    }
    </script>

    <input onkeydown="onlyEng();">   只能是數字 <script language=javascript>
    function onlyNum()
    {
    if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
    //考慮小鍵盤上的數字鍵
        event.returnValue=false;
    }
    </script>

    <input onkeydown="onlyNum();"> 只能是英文字母和數字<SCRIPT LANGUAGE=Javascript RUNAT=Server>
    function isEmail(strEmail) {
    if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
    return true;
    else
    alert("oh");
    }
    </SCRIPT>
    <input type=text onblur=isEmail(this.value)>   驗證EMAIL格式<script language="JavaScript1.2">
    function test() {
    if((a.b.value.indexOf ("sex") == 0)||(a.b.value.indexOf ("fuck") == 0)){
        alert("五講四美三熱愛");
        a.b.focus();
        return false;}
    }
    </script>
    <form name=a onsubmit="return test()">
    <input type=text name=b>
    <input type="submit" name="Submit" value="check">
    </form>

    posted @ 2008-03-21 14:23 重歸本壘(Bing) 閱讀(2187) | 評論 (0)編輯 收藏
     
    取值要通過<s:property value="" />或在任意的<s:/>標簽內使用%{};

    當Action的valueStack中有該屬性的值時,只需直接使用該屬性的名字即可;

    當Action的valueStack中沒有該屬性的值時,比如在session,application范圍中的屬性值時,需要加#或者#attr.;

    例子:
    假設某Action中有person成員變量,在application中存在company屬性
    那么我們可以通過以下方法取值:
    <s:property value="person.name" />
    <s:property value="#person.name" />
    <s:property value="company.name" /> //無法取到,因為company不在action的valueStack中
    <s:property value="#company.name" />

    <s:textfield name="person.name" value="person.name" /> //錯誤,value會直接顯示person.name字樣
    <s:textfield name="person.name" value="%{person.name}" />
    <s:textfield name="person.company.name" value="%{#company.name}" />
    <s:textfield name="person.company.name" value="%{#attr.company.name}" />
    posted @ 2008-03-20 18:16 重歸本壘(Bing) 閱讀(3675) | 評論 (0)編輯 收藏
     
    Truncate是SQL中的一個刪除數據表內容的語句,用法是:
    TRUNCATE TABLE [Table Name]。
       下面是對Truncate語句在MSSQLServer2000中用法和原理的說明:
    Truncate table 表名 速度快,而且效率高,因為:
    TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日志資源少。
    DELETE 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,并且只在事務日志中記錄頁的釋放。
    TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 DELETE。如果要刪除表定義及其數據,請使用 DROP TABLE 語句。
    對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發器。
    TRUNCATE TABLE 不能用于參與了索引視圖的表。
    posted @ 2008-03-11 18:16 重歸本壘(Bing) 閱讀(1142) | 評論 (0)編輯 收藏
     
    LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
        INTO TABLE tbl_name
        [FIELDS
            [TERMINATED BY '\t']
            [OPTIONALLY] ENCLOSED BY '']
            [ESCAPED BY '\\' ]]
        [LINES TERMINATED BY '\n']
        [IGNORE number LINES]
        [(col_name,...)]

    LOAD DATA INFILE語句從一個文本文件中以很高的速度讀入一個表中。如果指定LOCAL關鍵詞,從客戶主機讀文件。如果LOCAL沒指定,文件必須位于服務器上。(LOCAL在MySQL3.22.6或以后版本中可用。)

    為了安全原因,當讀取位于服務器上的文本文件時,文件必須處于數據庫目錄或可被所有人讀取。另外,為了對服務器上文件使用LOAD DATA INFILE,在服務器主機上你必須有file的權限。見6.5 由MySQL提供的權限。

    如果你指定關鍵詞LOW_PRIORITY,LOAD DATA語句的執行被推遲到沒有其他客戶讀取表后。

    使用LOCAL將比讓服務器直接存取文件慢些,因為文件的內容必須從客戶主機傳送到服務器主機。在另一方面,你不需要file權限裝載本地文件。

    你也可以使用mysqlimport實用程序裝載數據文件;它由發送一個LOAD DATA INFILE命令到服務器來運作。 --local選項使得mysqlimport從客戶主機上讀取數據。如果客戶和服務器支持壓縮協議,你能指定--compress在較慢的網絡上獲得更好的性能。

    當在服務器主機上尋找文件時,服務器使用下列規則:

    如果給出一個絕對路徑名,服務器使用該路徑名。
    如果給出一個有一個或多個前置部件的相對路徑名,服務器相對服務器的數據目錄搜索文件。
    如果給出一個沒有前置部件的一個文件名,服務器在當前數據庫的數據庫目錄尋找文件。
    注意這些規則意味著一個像“./myfile.txt”給出的文件是從服務器的數據目錄讀取,而作為“myfile.txt”給出的一個文件是從當前數據庫的數據庫目錄下讀取。也要注意,對于下列哪些語句,對db1文件從數據庫目錄讀取,而不是db2:

    mysql> USE db1;
    mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table;

    REPLACE和IGNORE關鍵詞控制對現有的唯一鍵記錄的重復的處理。如果你指定REPLACE,新行將代替有相同的唯一鍵值的現有行。如果你指定IGNORE,跳過有唯一鍵的現有行的重復行的輸入。如果你不指定任何一個選項,當找到重復鍵鍵時,出現一個錯誤,并且文本文件的余下部分被忽略時。

    如果你使用LOCAL關鍵詞從一個本地文件裝載數據,服務器沒有辦法在操作的當中停止文件的傳輸,因此缺省的行為好像IGNORE被指定一樣。

    LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,
    SELECT句法。為了將一個數據庫的數據寫入一個文件,使用SELECT ... INTO OUTFILE,為了將文件讀回數據庫,使用LOAD DATA INFILE。兩個命令的FIELDS和LINES子句的語法是相同的。兩個子句是可選的,但是如果指定兩個,FIELDS必須在LINES之前。

    如果你指定一個FIELDS子句,它的每一個子句(TERMINATED BY, [OPTIONALLY] ENCLOSED BY和ESCAPED BY)也是可選的,除了你必須至少指定他們之一。

    如果你不指定一個FIELDS子句,缺省值與如果你這樣寫的相同:

    FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'

    如果你不指定一個LINES子句,缺省值與如果你這樣寫的相同:

    LINES TERMINATED BY '\n'
    換句話說,缺省值導致讀取輸入時,LOAD DATA INFILE表現如下:

    在換行符處尋找行邊界
    在定位符處將行分進字段
    不要期望字段由任何引號字符封裝
    將由“\”開頭的定位符、換行符或“\”解釋是字段值的部分字面字符
    相反,缺省值導致在寫入輸出時,SELECT ... INTO OUTFILE表現如下:

    在字段之間寫定位符
    不用任何引號字符封裝字段
    使用“\”轉義出現在字段中的定位符、換行符或“\”字符
    在行尾處寫換行符
    注意,為了寫入FIELDS ESCAPED BY '\\',對作為一條單個的反斜線被讀取的值,你必須指定2條反斜線值。

    IGNORE number LINES選項可被用來忽略在文件開始的一個列名字的頭:

    mysql> LOAD DATA INFILE "/tmp/file_name" into table test IGNORE 1 LINES;

    當你與LOAD DATA INFILE一起使用SELECT ... INTO OUTFILE將一個數據庫的數據寫進一個文件并且隨后馬上將文件讀回數據庫時,兩個命令的字段和處理選項必須匹配,否則,LOAD DATA INFILE將不能正確解釋文件的內容。假定你使用SELECT ... INTO OUTFILE將由逗號分隔的字段寫入一個文件:

    mysql> SELECT * FROM table1 INTO OUTFILE 'data.txt'
               FIELDS TERMINATED BY ','
               FROM ...

    為了將由逗號分隔的文件讀回來,正確的語句將是:

    mysql> LOAD DATA INFILE 'data.txt' INTO TABLE table2
               FIELDS TERMINATED BY ',';

    相反,如果你試圖用下面顯示的語句讀取文件,它不會工作,因為它命令LOAD DATA INFILE在字段之間尋找定位符:

    mysql> LOAD DATA INFILE 'data.txt' INTO TABLE table2
               FIELDS TERMINATED BY '\t';

    可能的結果是每個輸入行將被解釋為單個的字段。

    LOAD DATA INFILE能被用來讀取從外部來源獲得的文件。例如,以dBASE格式的文件將有由逗號分隔并用雙引號包圍的字段。如果文件中的行由換行符終止,下面顯示的命令說明你將用來裝載文件的字段和行處理選項:

    mysql> LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
               FIELDS TERMINATED BY ',' ENCLOSED BY '"'
               LINES TERMINATED BY '\n';

    任何字段或行處理選項可以指定一個空字符串('')。如果不是空,FIELDS [OPTIONALLY] ENCLOSED BY和FIELDS ESCAPED BY值必須是一個單個字符。FIELDS TERMINATED BY和LINES TERMINATED BY值可以是超過一個字符。例如,寫入由回車換行符對(CR+LF)終止的行,或讀取包含這樣行的一個文件,指定一個LINES TERMINATED BY '\r\n'子句。

    FIELDS [OPTIONALLY] ENCLOSED BY控制字段的包圍字符。對于輸出(SELECT ... INTO OUTFILE),如果你省略OPTIONALLY,所有的字段由ENCLOSED BY字符包圍。對于這樣的輸出的一個例子(使用一個逗號作為字段分隔符)顯示在下面:

    "1","a string","100.20"
    "2","a string containing a , comma","102.20"
    "3","a string containing a \" quote","102.20"
    "4","a string containing a \", quote and comma","102.20"

    如果你指定OPTIONALLY,ENCLOSED BY字符僅被用于包圍CHAR和VARCHAR字段:

    1,"a string",100.20
    2,"a string containing a , comma",102.20
    3,"a string containing a \" quote",102.20
    4,"a string containing a \", quote and comma",102.20

    注意,一個字段值中的ENCLOSED BY字符的出現通過用ESCAPED BY字符作為其前綴來轉義。也要注意,如果你指定一個空ESCAPED BY值,可能產生不能被LOAD DATA INFILE正確讀出的輸出。例如,如果轉義字符為空,上面顯示的輸出顯示如下。注意到在第四行的第二個字段包含跟隨引號的一個逗號,它(錯誤地)好象要終止字段:

    1,"a string",100.20
    2,"a string containing a , comma",102.20
    3,"a string containing a " quote",102.20
    4,"a string containing a ", quote and comma",102.20

    對于輸入,ENCLOSED BY字符如果存在,它從字段值的尾部被剝去。(不管是否指定OPTIONALLY都是這樣;OPTIONALLY對于輸入解釋不起作用)由ENCLOSED BY字符領先的ESCAPED BY字符出現被解釋為當前字段值的一部分。另外,出現在字段中重復的ENCLOSED BY被解釋為單個ENCLOSED BY字符,如果字段本身以該字符開始。例如,如果ENCLOSED BY '"'被指定,引號如下處理:

    "The ""BIG"" boss"  -> The "BIG" boss
    The "BIG" boss      -> The "BIG" boss
    The ""BIG"" boss    -> The ""BIG"" boss

    FIELDS ESCAPED BY控制如何寫入或讀出特殊字符。如果FIELDS ESCAPED BY字符不是空的,它被用于前綴在輸出上的下列字符:

    FIELDS ESCAPED BY字符
    FIELDS [OPTIONALLY] ENCLOSED BY字符
    FIELDS TERMINATED BY和LINES TERMINATED BY值的第一個字符
    ASCII 0(實際上將后續轉義字符寫成 ASCII'0',而不是一個零值字節)
    如果FIELDS ESCAPED BY字符是空的,沒有字符被轉義。指定一個空轉義字符可能不是一個好主意,特別是如果在你數據中的字段值包含剛才給出的表中的任何字符。

    對于輸入,如果FIELDS ESCAPED BY字符不是空的,該字符的出現被剝去并且后續字符在字面上作為字段值的一個部分。例外是一個轉義的“0”或“N”(即,\0或\N,如果轉義字符是“\”)。這些序列被解釋為ASCII 0(一個零值字節)和NULL。見下面關于NULL處理的規則。

    對于更多關于“\”- 轉義句法的信息,在某些情況下,字段和行處理選項相互作用:

    如果LINES TERMINATED BY是一個空字符串并且FIELDS TERMINATED BY是非空的,行也用FIELDS TERMINATED BY終止。
    如果FIELDS TERMINATED BY和FIELDS ENCLOSED BY值都是空的(''),一個固定行(非限定的)格式被使用。用固定行格式,在字段之間不使用分隔符。相反,列值只用列的“顯示”寬度被寫入和讀出。例如,如果列被聲明為INT(7),列的值使用7個字符的字段被寫入。對于輸入,列值通過讀取7個字符獲得。固定行格式也影響NULL值的處理;見下面。注意如果你正在使用一個多字節字符集,固定長度格式將不工作。
    NULL值的處理有多種,取決于你使用的FIELDS和LINES選項:

    對于缺省FIELDS和LINES值,對輸出,NULL被寫成\N,對輸入,\N被作為NULL讀入(假定ESCAPED BY字符是“\”)。
    如果FIELDS ENCLOSED BY不是空的,包含以文字詞的NULL作為它的值的字段作為一個NULL值被讀入(這不同于包圍在FIELDS ENCLOSED BY字符中的字NULL,它作為字符串'NULL'讀入)。
    如果FIELDS ESCAPED BY是空的,NULL作為字NULL被寫入。
    用固定行格式(它發生在FIELDS TERMINATED BY和FIELDS ENCLOSED BY都是空的時候),NULL作為一個空字符串被寫入。注意,在寫入文件時,這導致NULL和空字符串在表中不能區分,因為他們都作為空字符串被寫入。如果在讀回文件時需要能區分這兩者,你應該不使用固定行格式。
    一些不被LOAD DATA INFILE支持的情況:

    固定長度的行(FIELDS TERMINATED BY和FIELDS ENCLOSED BY都為空)和BLOB或TEXT列。
    如果你指定一個分隔符與另一個相同,或是另一個的前綴,LOAD DATA INFILE不能正確地解釋輸入。例如,下列FIELDS子句將導致問題:
    FIELDS TERMINATED BY '"' ENCLOSED BY '"'

    如果FIELDS ESCAPED BY是空的,一個包含跟隨FIELDS TERMINATED BY值之后的FIELDS ENCLOSED BY或LINES TERMINATED BY的字段值將使得LOAD DATA INFILE過早地終止讀取一個字段或行。這是因為LOAD DATA INFILE不能正確地決定字段或行值在哪兒結束。
    下列例子裝載所有persondata表的行:

    mysql> LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata;

    沒有指定字段表,所以LOAD DATA INFILE期望輸入行對每個表列包含一個字段。使用缺省FIELDS和LINES值。

    如果你希望僅僅裝載一張表的某些列,指定一個字段表:

    mysql> LOAD DATA INFILE 'persondata.txt'
               INTO TABLE persondata (col1,col2,...);

    如果在輸入文件中的字段順序不同于表中列的順序,你也必須指定一個字段表。否則,MySQL不能知道如何匹配輸入字段和表中的列。

    如果一個行有很少的字段,對于不存在輸入字段的列被設置為缺省值。

    如果字段值缺省,空字段值有不同的解釋:

    對于字符串類型,列被設置為空字符串。
    對于數字類型,列被設置為0。
    對于日期和時間類型,列被設置為該類型的適當“零”值。
    如果列有一個NULL,或(只對第一個TIMESTAMP列)在指定一個字段表時,如果TIMESTAMP列從字段表省掉,TIMESTAMP列只被設置為當前的日期和時間。

    如果輸入行有太多的字段,多余的字段被忽略并且警告數字加1。

    LOAD DATA INFILE認為所有的輸入是字符串,因此你不能像你能用INSERT語句的ENUM或SET列的方式使用數字值。所有的ENUM和SET值必須作為字符串被指定!

    如果你正在使用C API,當LOAD DATA INFILE查詢完成時,你可通過調用API函數mysql_info()得到有關查詢的信息。信息字符串的格式顯示在下面:

    Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
    當值通過INSERT語句插入時,在某些情況下出現警告,除了在輸入行中有太少或太多的字段時,LOAD DATA INFILE也產生警告。警告沒被存儲在任何地方;警告數字僅能用于表明一切是否順利。如果你得到警告并且想要確切知道你為什么得到他們,一個方法是使用SELECT ... INTO OUTFILE到另外一個文件并且把它與你的原版輸入文件比較。

     

    posted @ 2008-03-11 18:12 重歸本壘(Bing) 閱讀(475) | 評論 (0)編輯 收藏
     

        一、SOA是指面向服務的體系結構(service-oriented architecture),他代表了包括web技術在內的軟件程序甚至硬件技術的一個發展方向,相對于錯綜復雜、標準各異的硬件平臺、操作系統和編程語言,SOA提供盡可能中立而有效的接口,以實現任務、服務之間的對話,直接降低了商業信息系統的溝通成本。

        二、SOA更加接近比爾·蓋茨“信息就在你指尖”的愿景,繼互聯網打破信息和數據流動的壁壘之后,致力于打破軟件程序在不同商業組織現有的機構系統之間進行無縫銜接的障礙,而IBM、RACLE等巨人定制的SOA國際標準SCA已經為此構造出簡單性的底層技術標準基礎。

        三、原則上所有異構的信息系統都存在無縫銜接的內在需求。傳統的搜索引擎系統就是一種典型的封閉結構,沒有真正無縫的外部接口。伯納斯·李所推動的語義網和web化的SOA在本質上一致,很好的結合起來雙方力量可以倍增,語義網屬于從網絡底層推動“無縫銜接”的努力, 但是在這一技術方面的努力之外,還應該涌現出更多在人性、用戶方面推動SOA的努力。

        四、SOA改變了軟件的概念。軟件原來傳統的底層部分被改造為真正工具性的事物,而廣義化的軟件概念中“服務和任務”成為核心;軟件不再是組件、單元、數據庫等的加和,而是對于任務和服務的回應,因此服務之間的松耦合異常重要和活躍。隨著概念的改變,軟件業將重新洗牌。競爭規則改變很大,程序、代碼、結構次要化,數據、任務、外部接口更加重要,文本數據可能成為以后SOA的主要對象。 

        五、SOA側重提供與不同任務的標準化服務接口,其水平高低應該取決于雙方的可理解性、可分解性、可交互和互動性。從代碼和數據,到結構的技術升級,將進行新的升級,以結構升級入手,尋找比結構更重要的,諸如函數調用、數據響應、結構自適應等。其中,最大的難點應該是互動如何改變參與者的狀態,這也是最刺激的地方。

        六、SOA作為第三代軟件架構標準,如果與web和3G結合,將大大拓展軟件行業的空間,軟件可以擁有自己的渠道了,軟件加強了自身的力量。

        七、SOA真正付諸實施不是一兩家商業力量的事情,他屬于一項社會化的技術就年百微工程,需要整合大量的資源,需要有堅強的平臺,需要建立商業力量和社會力量的共同利基,需要尋找現實和未來的平衡點。SOA的價值目前主要還是在理念方面,可以觸類旁通的引用到很多其他技術領域;SOA讓信息和技術更加自由、開放、共享,可以盤活更多的商業數據和技術資源,產生新的價值。同時,SOA需要做出大量的垂直標準,不同領域的差異性可能比較大,雖然他們具有共同的SCA底層。

        八、SOA是商業信息系統的現有資源為基礎提供低門檻的接口升級方案,讓客戶之間的商業溝通更加自由靈活,同時降低面對變化的任務和服務的溝通對話成本,這一目標是通過基于服務和任務的思維和文化理念層次的結構調整實現的,超越了僅僅基于技術和運用的結構調整方案。

    posted @ 2007-11-20 10:04 重歸本壘(Bing) 閱讀(349) | 評論 (1)編輯 收藏
     
    1. 我和超人的唯一區別是:我把內褲穿在里面. 
    2. 我不是隨便的人, 但隨便了起來就不是人了. 
    3. 我身在江湖, 江湖卻沒有我的傳說. 
    4. 走別人的路, 讓別人無路可走. 
    5. 穿別人的鞋, 走自己的路, 讓他們找去吧. 
    6. 走NB的路, 讓SB說去吧. 
    7. 聽說女人如衣服, 兄弟如手足. 回想起來, 我竟然七手八腳的裸奔了19年. 
    8. 寧愿相信世間有鬼, 也不相信男人那張嘴. 
    9. 水至清則無魚, 人至賤則無敵. 
    10. 樹不要皮, 必死無疑. 人不要臉, 天下無敵. 
    11. 一山不能容二虎, 除非一公一母. 
    12. 對流血一周仍然不死的動物千萬不能大意. 
    13. 我, 一個大學生的人生目標:農婦, 山泉, 有點田. 
    14. 女人謹記:一定要吃好玩好睡好喝好. 一旦累死了, 就別的女人花咱的錢, 住咱的房子, 睡咱的老公, 泡咱的男朋友, 還打咱的娃. 
    15. 有一天, 我夢見自己的錢花光了, 醒來一看, 口袋真的空空的. 
    16. 我減肥已取得了很大的成功, 你看, 我三個下巴都尖了. 
    17. 千萬別等到人人都說你丑的時候才發現自己真的丑. 
    18. 如果朋友可以出賣, 每個值五元的話, 我也能發筆小財了. 
    19. 肚子大不可怕, 可怕的是大而無料. 
    20. 女人先表現自己大方, 男人就不敢小氣了. 
    21. 人, 生在床上, 死在床上, 欲生欲死, 也在床上. 
    22. 巫師, 請轉告公主, 老子還在披荊斬刺的路上, 還有雪山未翻, 大河未過, 巨龍未殺, 美女未泡. 叫她繼續死睡吧. 
    23. 無所為而無所謂, 無所謂而無所不為. 
    24. 鐵飯碗的真正含義不是在一個地方有飯吃, 而是一輩子到哪兒都有飯吃. 
    25. 騷歸騷, 騷有騷的貞操. 賤歸賤, 賤有賤的尊嚴. 
    26. 人生的成功不在于拿到一副好牌, 而是怎樣將壞牌打好. 
    27. 0歲出場亮相, 10歲天天向上, 20歲遠大理想, 30歲發奮圖墻, 40歲基本定向, 50歲處處吃香, 60歲打打麻將, 70歲處處閑逛, 80歲拉拉家常, 90歲掛在墻上. 
    28. 再過幾十年, 我們都來相會, 送到火葬場, 全部燒成灰, 你一堆, 我一堆, 誰也不認識誰, 全部送到農村做化肥. 
    29. 自從我變成了狗屎, 就再也沒有人踩在我頭上了. 
    30. 路邊的野花不要, 踩. 
    31. 也許似乎大概是, 然而未必不見得. 
    32. 說過的話可以不算, 喜歡的人天天要換. 
    33. 本人中科院高級潛水院院士, 諾貝爾長期掉線獎, 奧斯卡終身隱身獎. 
    34. 你放心, 看到你我連食欲都沒有了, 還談什么性欲. 
    35. 生活真他媽好玩, 因為生活老他媽玩我. 
    36. 佛曰:"前世的500次回眸才換來今生的一次擦肩而過." 我寧愿用來世的一次擦肩而過換得今生的500次回眸. 
    37. 黑夜給了我一雙黑色的眼睛, 可我卻用它來翻白眼. 
    38. 我想早戀, 但是已經晚了. 
    39. 天啊, 我的衣服又瘦了. 
    40. 這個世界上我只相信兩個人, 一個是我, 一個不是你. 
    41. 思想有多遠, 你就給我滾多遠. 
    42. 流氓不可怕, 就怕流氓有文化. 
    43. 客官請自重, 小女子只賣身不賣藝. 
    44. 男人的謊言可以騙女人一夜, 女人的謊言可以騙男人一輩子. 
    45. 如果不能給你的女人幸福, 請停下你解開她衣扣的手. 
    46. 如果不能給你的女人穿上嫁衣, 那么千萬別停下你解開她衣扣的手. 
    47. 水能載舟, 亦能煮粥. 
    48. 開車無難事, 只怕有新人. 
    49. 一見鐘情, 再而衰, 三而竭. 
    50. 生, 容易. 活, 容易. 生活不容易. 
    51. 如果我能看到我的背影, 我想它一定很憂傷, 因為我把快樂都留在了前面. 
    52. 出問題先從自己身上找原因, 別一便秘就怪地球引力不夠. 
    53. 給我織一條圍巾, 我愿以一生關懷相報. 否則, 你就用圍巾勒死我吧. 
    54. 男人在不懂的時候裝懂, 女人則恰好相反. 
    55. 春色滿園關不住, 我拉紅杏出墻來. 
    56. 你以為我會眼睜睜看著你去送死嗎? 我會閉上眼睛的. -_-
    57. 我以為我很頹廢, 今天我才知道, 原來我早報廢了. 
    58. 我視金錢如糞土, 我爸視我為糞池. 
    59. 我喝酒想把痛苦溺死, 但這該死的痛苦卻學會了游泳. 
    60. 我是你的風箏, 線在你手上, 可陪伴我的只有風. 
    61. 別人都在假裝正經, 那我就只有假裝不正經了.
    posted @ 2007-11-05 10:54 重歸本壘(Bing) 閱讀(516) | 評論 (0)編輯 收藏
     

    1:人的一生有三情:親情、友情、愛情,缺其一者,是為遺憾;失其二者,是為可憐;失其三者,枉活一生。

    2:來如流水兮逝如風,飄飄入世,如水之不得不流,不知何故來也不知何所終。

    3:水至清則無魚,人至察則無徒。

    4:難得糊涂。

    5:存在的就是合理的。

    6朋友是歷史性、階段性的。而唯有知己,是一輩子的

    posted @ 2007-11-05 10:41 重歸本壘(Bing) 閱讀(316) | 評論 (0)編輯 收藏
    僅列出標題
    共12頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
     
    Web Page Rank Icon
    主站蜘蛛池模板: 国产亚洲精品a在线观看| 亚洲日韩中文字幕天堂不卡| 久草免费福利视频| 亚洲国产日韩女人aaaaaa毛片在线| 99久久综合国产精品免费| 日韩免费高清一级毛片| 久久精品亚洲精品国产色婷| 在线免费视频一区二区| 99久久国产精品免费一区二区| 亚洲AV无码久久久久网站蜜桃| 国产精品亚洲综合一区| 成人午夜免费福利视频| yellow免费网站| 亚洲香蕉久久一区二区三区四区| 亚洲性日韩精品一区二区三区| 永久免费av无码不卡在线观看| 国产精品无码永久免费888| 亚洲国产人成在线观看| 久久久久亚洲av毛片大 | 精品无码国产污污污免费| 丁香花在线视频观看免费| 亚洲国产精品无码久久| 久久久久亚洲AV无码专区首JN| 免费**毛片在线播放直播| 2020久久精品国产免费| 岛国岛国免费V片在线观看| 精品亚洲国产成人| 亚洲高清在线视频| 亚洲男人在线无码视频| 最新免费jlzzjlzz在线播放| 无码免费一区二区三区免费播放 | 阿v免费在线观看| 亚洲性色高清完整版在线观看| 久久亚洲国产精品123区| 日韩免费三级电影| 青娱乐免费在线视频| 久久国产精品萌白酱免费| 久久成人18免费网站| 黄页网站在线视频免费| 亚洲国产精品无码中文lv| 亚洲中文字幕无码爆乳app|