2017年3月29日 星期三

MySQL 如何找出 default Database 所在位置

Windows 版:
1.以 MS-DOS模式登入 MySQL
    mysql -u root -p

2.輸入以下指令
SHOW VARIABLES WHERE Variable_Name LIKE "%dir";





DataDir 就是  Database 所在位置

2017年3月26日 星期日

MS SQL 2008 儲存 Unicode 字元之解決

以 JSP + MS SQL 為例
將儲存欄位設定為 nchar 或 nvarchar 等 UNICODE 資料型態應該就可以了。

1.定義 DB 之SCHEMA 必須為 nvarchar

 

2.網頁編碼須為 utf-8
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>


3.Database DAO 必須以 UTF-8 連線
    <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.connection.url">jdbc:sqlserver://127.0.0.1:1433;databaseName=myDB2;useUnicode=true;characterEncoding=UTF-8;</property>



參考資料:
原文出處:  
http://rogercode.blogspot.tw/2015/07/sql-serversql-server.html

[SQL Server]修改SQL Server資料庫字元編碼

目前網頁幾乎都用萬國碼UTF-8 and Unicode
若希望將資料庫的定序名稱更改為時,卻無法使用SQL Server Enterprise Manager直接修改,
可以使用下列語法修改:



ALTER DATABASE [DBName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [DBName] COLLATE SQL_Latin1_General_CP1_CI_AS
ALTER DATABASE [DBName] SET MULTI_USER WITH ROLLBACK IMMEDIATE

PS.[DBName]為您的資料庫名稱。

因為在改定序名稱時必須先鎖定資料庫
第一行要先將資料庫設定為SINGLE_USER(同一時間只能有一位使用者存取資料庫)
第二行修改定序名稱
第三行將資料庫改回 MULTI_USER
另外要執行這些指令值須先將所在的資料庫切換到master下。

註:
"Chinese_Taiwan_Stroke_CI_AS"為BIG5
"SQL_Latin1_General_CP1_CI_AS"為UTF8

Javascript 動態新增 input Element (不使用 Jquery)

圖例:
按新增作者後

<script>
    function addinput(){    
        var obj_0 = document.getElementsByName("addmember");
        var items="";
        //保存原有值
        for(i=0; i<obj_0.length ; i++){        
        if(items==""){
        items = document.getElementsByName("addmember")[i].value;
        }else{
        items += ","+ document.getElementsByName("addmember")[i].value;
        }        
        }
       
        if( obj_0.length==0 ){
        //第一次新增
          var obj = document.getElementById("content");
            obj.innerHTML = obj.innerHTML + "<br>作者:<input type='text' name='addmember' value='' />";                          
        }else{
        //第二次以後
        //先清除原有input 項目,再重新新增
        document.getElementById("content").innerHTML="";
        var obj = document.getElementById("content");
if( items.indexOf(",")>0 ){
            var ss =items.split(",");
                for(i=0; i<ss.length ; i++){
                    var val = ss[i];                  
                obj.innerHTML += "<br>作者:<input type='text' name='addmember' value='"+ val + "' />";        
                }
}else{              
                obj.innerHTML = "<br>作者:<input type='text' name='addmember' value='"+ items + "' />";        
}      
            obj.innerHTML += "<br>作者:<input type='text' name='addmember' value='' />";        
        }  
    }

</script>
</head>
<body>
<form name="myForm">
<div id="myDiv" style="display:none">test</div><br/>

作者:<input type="text" name="member" /><input type='button' id="add" value="新增作者" onclick="addinput();" /><br/>
<span id="content"></span><br/>

</form>
</body>


Java 不同編碼字串, 其字串長度大小計算

以 Java 開發專案, 在 DAO 寫入資料庫時, 常遇到JAVA 字串與資料庫編碼不一致, 有時會產生字串過長,導致無法寫入資料庫的情況. 這時就要在入庫前, 先驗證 JAVA 編碼字串是否超出資料庫欄位長度 JAVA 依 不同編碼, 其長度是不一樣的 如: ...