2012年12月14日 星期五

如何將 Eclipse 介面切換回英文?

假設你曾經有將Eclipse的介面中文化過,那如何切換回英文呢?

方法如下:

Setp 1.在桌面上的 Eclipse捷徑 按右鍵→內容。












Step 2.在"目標"中的路徑如:D:\eclipse\eclipse.exe 的後面加上參數-nl "zh_US"代表為英文介面,之後按下確定即可,此時執行桌面上的Eclipse捷徑就會切換回英文介面了,但如果你去執行路徑( D:\eclipse\eclipse.exe )底下的eclipse.exe它還會是中文介面。












補充:
英文-> -nl "zh_US"
繁體-> -nl "zh_TW"

參考資料:
http://www.javaworld.com.tw/jute/post/view?bid=10&id=40626

2012年11月17日 星期六

Java 實作JTable及取JTable欄位值等

本篇簡單實作JTable以及如何取得JTable欄位值,如有補充會再加上。
如果有需要請自行複製程式碼,自行修改!!

(一)前置準備:
1.需有資料庫mysql
2.需要有Java JDBC資料庫的驅動
   (不會作請自行參考JAVA安裝MySQL驅動程式)

(二)實作:
test_db.java
test.java

(三)程式碼如下:
不懂看註解,再不懂請自行查資料、翻翻手邊的書吧!!
test_db.java:

import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class test_db {

private Connection con = null; //Database objects
//連接object
private Statement stat = null;
//儲存sql執行的結果
private ResultSet rs = null;
ResultSetMetaData rsmd;
private PreparedStatement pst = null;
JTable New_DJT;//儲存資料用
    public test_db() {
    }
 
    //開啟連結
public int jdbcmysql() {
   try {
    Class.forName("com.mysql.jdbc.Driver");
   //註冊driver
   con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","test","test");
   //"jdbc:mysql://localhost:3306/test"
   // localhost 是主機名稱,3306是mysql資料庫port(自己看自己的電腦mysql資料庫的port為多少),test 是資料庫名稱,test是帳號,root 是密碼,con 是取得連線
   return 1;
   }
   catch(ClassNotFoundException e)
   {
     System.out.println("DriverClassNotFound :"+e.toString());
     return -1;
   }//有可能會產生sqlexception
   catch(SQLException x) {
     System.out.println("Exception :"+x.toString());
     return 0;
   }

    }
 
    //Select Table Data
    //YND是0只單存判斷是否有資料,如果是1代表判斷是否有資料並且要取資料
    public int STD(String selectSQL,int YND){
    try{
   
stat = (Statement) con.createStatement();
rs = stat.executeQuery(selectSQL); //executeQuery()執行sql指令
rs.last(); //將游標移到最後一筆資料
int ResultCount = rs.getRow(); //rs.getRow()取得資料列,找不到資料會是0 有資料會>=1
rs.beforeFirst(); //回到第一個ResultSet

//假如判斷是否有資料並且取資料
if (ResultCount>=1 && YND==1){

rsmd = rs.getMetaData(); //取得中介資料,如資料庫的欄位名稱.欄位數.欄位型態等
int cx=rsmd.getColumnCount();//取得欄位數
System.out.println(cx);

//參考資料:http://www.interinfo.com.tw/edoc/ch20/frontline.htm
//Vector是一種能夠自動長大或縮小的陣列形態,其最大的用途就是彌補Array 的彈性不足,在宣告的時後,可以不必宣告其大小,等到物件一個個的加入時,容量不足時就會自動加大容量。
Vector V_CNames=new Vector();//表頭名稱
for(int x=1;cx>=x;x++){
//設定表頭名稱
V_CNames.addElement(("x"+String.valueOf(x)));
}

Vector V_RData=new Vector();//儲存資料庫撈出來的所有資料列
while(rs.next()){
Vector New_RD=new Vector();
for(int x=1;cx>=x;x++){
//rs.getString(數值)取得rs中的值,並丟入New_DR,形成一行資料列
New_RD.addElement(rs.getString(x));
}
V_RData.addElement(New_RD);//New_RD加入到V_RData
}
//New_DJT=new JTable(資料列,表頭);
New_DJT=new JTable(V_RData,V_CNames);
JScrollPane jsp;//宣告一個滾動槓(捲動容器)
New_DJT.setShowVerticalLines(true);//設定是否顯示表格的垂直分割線
New_DJT.setShowHorizontalLines(true);//設定是否顯示表格的水平分割線
jsp=new JScrollPane(New_DJT);//給JTabel表格加上滾動槓(捲動容器)

JFrame myFrame=new JFrame("取得資料庫表格測試");
myFrame.setSize(500,200);
myFrame.setLocation(200,200);
// 把 table 放進JFrame
myFrame.getContentPane().add(jsp);
myFrame.setVisible(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//=============================
int row=New_DJT.getRowCount(); //取得列數
       int col=New_DJT.getColumnCount();  //取得行數
       System.out.println("col欄位數:"+col+"; row列數:"+row);
         
           for(int i=0;row>i;i++){
            for(int j=0;col>j;j++){
            if (j==(col-1)){
            //印出值並換行
            System.out.println((String)New_DJT.getValueAt(i, j)); //取得JTable中的值強制轉換String型態
            }else{
            //印出值並不換行
            System.out.print((String)New_DJT.getValueAt(i, j)+" | ");
            }
            }
           }

}else{
//判斷是否有資料

}
return 1;
    }catch(SQLException e){
System.out.println("DropDB Exception :" + e.toString());
return -1;//發生錯誤及異常
/**}finally{
Close();
System.out.println("Close");*/
   }
//int ResultCount = rs.getRow();
    }
public void Close() {
 try
 {
   if(rs!=null)
   {
     rs.close();
     rs = null;
   }
   if(stat!=null)
   {
     stat.close();
     stat = null;
   }
   if(pst!=null)
   {
     pst.close();
     pst = null;
   }
 }
 catch(SQLException e)
 {
   System.out.println("Close Exception :" + e.toString());
 }
}
}


test.java:

public class test {

    public test() {
    }
    public static void main(String[] args){
    //test_wf TWF=new test_wf();
    test_db t_db=new test_db();
    if (t_db.jdbcmysql()==1){
    System.out.println("1");
    //t_db.STD(sql指令字串,1) 1代表取資料
if(t_db.STD("SELECT * FROM test1",1)==1){
System.out.println("2");
t_db.Close(); //關閉資料庫所有資源
}
    }

    }
}

結果如下:




2012年6月10日 星期日

ASP.NET ListView 抓取EmptyDataTemplate控制項

如果你從來沒用過Asp.net ListView,而現在你是第一次用的人,必須要知道一件事,當沒有資料時ListView並不會跑ItemDataBound事件中的ListViewItemType.EmptyItem,而GridView它是沒有資料時也會跑ItemDataBound事件中的ListViewItemType.EmptyItem。

以下就是當ListView 沒有資料時,如何抓取EmptyDataTemplate控制項,並顯示訊息...

前端:


<asp:ListView ID="ListView1" runat="server" DataKeyNames="id">
....
  <EmptyDataTemplate>
    <asp:Label ID="LVEmpty" runat="server" ></asp:Label>
  </EmptyDataTemplate>
....
</asp:ListView>

------------------------------

後置程式碼:

....
ListView1.DataSource = Nothing
'當無資料時,跑過以下這行DataBind,也不會進入ItemDataBound事件
ListView1.DataBind()
'Controls(0)是指ListView1中的EmptyDataTemplate, FindControl 抓取控制項LVEmpty
Dim LV_Empty As Label = CType( ListView1.Controls(0).FindControl(" LVEmpty "), Label)
LV_Empty.Text="無資料"
....


以上是比較簡單的方法,如果有更好的方法請提出建議,感謝~

參考資料:http://www.dotblogs.com.tw/hatelove/archive/2010/11/19/listview-emptydatatemplate-findcontrol.aspx

2012年5月27日 星期日

ASP.NET 判斷瀏覽器是否為IE


  以下是判斷瀏覽器是否為IE...

程式碼如下:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim hbc As HttpBrowserCapabilities = Request.Browser
        Response.Write("瀏覽程式種類: " & hbc.Type & "<br/>") '假如是IE版本為8就會顯示IE8
        Response.Write("瀏覽程式名稱: " & hbc.Browser & "<br/>") '假如是IE就顯示IE
        'IndexOf字串搜尋,假如有找到IE就會>-1,否則等於-1
        If hbc.Browser.ToUpper().IndexOf("IE") >= 0 Then
            Response.Write("瀏覽器是IE瀏覽器" & "<br/>")
        Else
            Response.Write("瀏覽器為" & hbc.Browser & "<br/>")
        End If
        Response.Write("版本: " & hbc.Version & "<br/>")
        Response.Write("主版本: " & hbc.MajorVersion & "<br/>")
        Response.Write("次版本: " & hbc.MinorVersion & "<br/>")
        Response.Write("平台: " & hbc.Platform & "<br/>")
        Response.Write("支援框架: " & hbc.Frames & "<br/>")
        Response.Write("支援表格: " & hbc.Tables & "<br/>")
        Response.Write("支援Cookies: " & hbc.Cookies & "<br/>")
        Response.Write("支援VBScript: " & hbc.VBScript & "<br/>")
        Response.Write("支援Java Applets: " & hbc.JavaApplets & "<br/>")
        Response.Write("支援ActiveX控制項: " & hbc.ActiveXControls & "<br/>")
 End Sub

執行結果如下:

參考:
http://blog.blueshop.com.tw/kenqpqp/archive/2006/03/29/20517.aspx
http://msdn.microsoft.com/zh-tw/library/system.web.configuration.httpcapabilitiesbase.browser(v=vs.90).aspx#Y500

2012年5月26日 星期六

ASP.NET 實作AJAX Control 會員登入


此篇大概講解怎麼透過JavaScriptASP.NET Web Services來傳遞資料,判斷是否有資料存在,而Ajax控制項的設定請自行設定摸索。
P.S說明已寫在程式碼註解中,只要您懂一點點JavaScript應該看得懂此篇的程式碼


Default.aspx 如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .SPBackground
        {
            border: 1px solid #2F4F4F;
            color: white;
            background-color: #000000;
            font-weight: bold;
            cursor: not-allowed;
            filter: Alpha(opacity=35);
        }
        .Login_P
        {
            margin-top: 5px;
            margin-bottom: 5px;
        }
    </style>
    <script type="text/javascript">
<!--
        function Call_Login(Acc, Pass) {
        //當執行完WebServices的Login函式時,將回傳值再傳給javascript的Check_Login函式
            TWS.Login(Acc, Pass, Check_Login);
        }
 -->
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </ajaxToolkit:ToolkitScriptManager>
        <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" 
        TargetControlID="LB_Login" CancelControlID="B_Canceled" 
        PopupDragHandleControlID="LBL_Title" 
        PopupControlID="Login_Panel" BackgroundCssClass="SPBackground" 
        DropShadow="True">
        </ajaxToolkit:ModalPopupExtender>
    <asp:LinkButton ID="LB_Login" runat="server" CausesValidation="False" >登入</asp:LinkButton><br />
    </div>
        <asp:Panel ID="Login_Panel" runat="server" ScrollBars="Auto" BackColor="WhiteSmoke" style="display: none" BorderColor="#0000C0" BorderStyle="Solid" BorderWidth="1px" HorizontalAlign="Center">
        <table cellpadding="0" cellspacing="0" width="210px">
            <tr>
                <td colspan="2">
                    <span style="color: #ffffff">
                    </span>
                    <asp:Label ID="LBL_Title" runat="server" BackColor="Blue" Font-Bold="True" ForeColor="White" Style="text-align: left" Text="登入" Width="100%"></asp:Label>
                </td>
            </tr>
            <tr>
                <td width="50px">
                    <p class="Login_P">
                        帳號:</p>
                </td>
                <td align="left">
                    <p class="Login_P">
                    <asp:TextBox ID="TB_A" runat="server" Width="150px"></asp:TextBox>
                    </p>
                </td>
            </tr>
            <tr>
                <td width="50px">
                  <p class="Login_P">
                    密碼:
                  </p>
                </td>
                <td align="left">
                  <p class="Login_P">
                    <asp:TextBox ID="TB_P" runat="server" TextMode="Password" Width="150px"></asp:TextBox>
                  </p>
                </td>
            </tr>
            <tr>
                <td width="50px">
                </td>
                <td align="right">
                    <input id="B_Login" type="button" runat="server" value="登入" />
                    &nbsp;
                    <input id="B_Canceled" type="button" runat="server" value="取消" />
                    &nbsp;
                </td>
            </tr>
        </table>
    </asp:Panel>
    </form>
</body>
</html>


Default.aspx.vb 如下:

Imports System.Text '為了使用StringBuilder
Partial Class _Default
    Inherits System.Web.UI.Page


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim js As New StringBuilder


        js.Append("function Check_Login(CheckData) {")
        js.Append("switch (CheckData) {")
        js.Append("case 0:")
        js.Append("alert('帳號密碼錯誤!!');break;")
        js.Append("case 1:")
        js.Append("$get('" & B_Login.ClientID & "').disabled=true;") '當登入成功時,透過javascript將登入按鈕設為不啟用
        js.Append("alert('歡迎登入!!');")
        js.Append("window.location.reload();break;")
        js.Append("}}")


        If Not Page.IsPostBack Then
            '在B_Login按鈕中加入onclick,並將呼叫javascript的Call_Login函式,而$get等同於document.getElementById("TextBox1")
            '因為有ScriptManager的關係才可以用$get簡化寫法
            B_Login.Attributes("onclick") = "Call_Login($get('" & TB_A.ClientID & "').value,$get('" & TB_P.ClientID & "').value);"
        End If
        'ScriptManager.RegisterClientScriptBlock會再Html中插入javascript
        ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "", js.ToString, True) 
        '以下這行必須加入,否則無法在前端使用 TWS.Login
        Me.ToolkitScriptManager1.Services.Add(New System.Web.UI.ServiceReference("TWS.asmx"))
    End Sub
End Class

Step 1.在專案中按右鍵→加入新項目→點選:Web服務→加入

TWS.asmx 如下:


然後請執行看看結果,帳號為123、密碼為456

ASP.NET使用AJAX Control Toolkit前相關設定


在開發ASP.NET網頁程式設計時,想使用更多AJAX Control必須將專案作些設定,但前提是必須將AjaxControlToolkit.dll加入參考到自己的專案中,再作 .NET Framework 版本的設定及web.config的設定。
Step 1.方案總管→在專案上按右鍵→加入參考→AjaxControlToolkit.dll→確定,之後再方案總管中就會看到Bin資料夾,展開後就會看到AjaxControlToolkit.dll,就代表你已經將ajax dll檔引用進來了。
P.S我使用的AjaxControlToolkit版本是3.5,看您自己是使用哪一個版本
Step 2.方案總管→在專案上按右鍵→屬性頁→建置,將目前.NET Framework 2.0 設定為 .NET Framework 3.5→確定
P.S如果您的AjaxControlToolkit版本是其他版本,那您的.NET Framework也要跟著作設定

Step 3.接著設定專案中的web.config檔,請先找到<controls></controls>並加入為以下這行
<controls>
………………………..
    <!--請加入以下這行,這行意思是在使用Ajax控制項時,它的標籤名稱為ajaxToolkit -->
    <add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" />
………………………..
</controls>


Step 4.接著就可以在ASP.NET網頁上加入Ajax控制項

以上就是AJAX Control Toolkit的相關設定

2012年4月29日 星期日

如何在ASP.NET Web Services 中使用 Session


Step 1. 先行設定web.config檔,加入以下這段Code
<system.web>
.....
<!--主要是以下這行,可參考:http://msdn.microsoft.com/zh-tw/library/h6bb9cz9(v=vs.80).aspx-->
  <sessionState mode="InProc" />
.....
</system.web>

Step 2.設定完web.config檔後,接著必須在asmx檔中作設定,如下...
    '在WebMethod括號內加上EnableSession:=True即可
    <System.Web.Services.WebMethod(EnableSession:=True)> _
    <System.Web.Script.Services.ScriptMethod()> _
    Public Function GetServerTime(ByVal format As String) As String
        ....
        Session("time_data")=Now.ToString(format)
        ....
    End Function


詳細說明可參考:http://www.iiiedu.org.tw/knowledge/knowledge20030630_2.htm

2012年4月23日 星期一

mysql對外連線設定

MYSQL有兩個使用者, 一個是localhost的管理者, 另一個是對外連線的管理者。
Step 1.對外連線的管理者設定密碼: SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');
Step 2.在設定權限: GRANT ALL PRIVILEGES ON *.* TO 'dbAdmin'@'%' IDENTIFIED BY 'newpasswd' WITH GRANT OPTION;
 p.s dbAdmin 就是指 root
可參考 http://www.sy3es.tnc.edu.tw/teaching/php_mysql/mysql.htm

2012年4月11日 星期三

JAVA安裝MySQL驅動程式

Step 1.請先到mysql的官方網站下載JDBC驅動 http://www.mysql.com/downloads/connector/j/

Step 2.下載完後,將資料夾內的mysql-connector-java-5.1.19-bin.jar檔複製,並在此路徑C:\Program Files (x86)\Java\jdk1.7.0_03\jre\lib\ext\下的資料夾貼上mysql-connector-java-5.1.19-bin.jar檔

PS.要看您的JDK版本為何,因為我的JDK版本為第7版,所以必須在jdk1.7.0_03\jre\lib\ext資料夾下貼上mysql-connector-java-5.1.19-bin.jar檔

Step 3.新增環境變數,變數名稱:CLASSPATH 變數值:.;C:\Program Files (x86)\Java\jdk1.7.0_03\jre\lib\ext\mysql-connector-java-5.1.19-bin.jar;,這邊的變數值就是剛剛在Step 2所貼上的mysql-connector-java-5.1.19-bin.jar的位置。

PS1.在我的電腦上按右鍵→內容→如果是系統是XP→切換到「進階」頁籤→環境變數→使用者的環境變數,按下新增→輸入變數名稱、變數值→確定,就可新增環境變數
PS2.在我的電腦上按右鍵→內容→如果是系統是W7→進階系統設定→切換到「進階」頁籤→環境變數→使用者的環境變數,按下新增→輸入變數名稱、變數值→確定,就可新增環境變數

Step 4.接著請參考一般java書上所寫的方法去測試驅動是否有安裝成功


參考網址:http://tw.myblog.yahoo.com/claudehsu/article?mid=2134&prev=2135&next=2133

2012年3月31日 星期六

SqlParameters


  1. Dim Sql_DataSource As New SqlDataSource
  2. Sql_DataSource.ConnectionString="DataSource=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|DB.mdf;Integrated Security=True;User Instance=True" '設定資料庫
  3. 'Account是參數名稱,也就是最下方的SelectCommand後面的@Account
  4. Sql_DataSource.SelectParameters.Add("Account", Account.Text)
  5. Sql_DataSource.SelectParameters.Add("Password", Password.Text)
  6. Sql_DataSource.SelectCommand = "select * from Member where Account=@Account and Password=@Password"

  7. Dim dv As DataView
  8. dv = CType(Sql_DataSource.Select(DataSourceSelectArguments.Empty), DataView)
  9. If dv.Table.Rows.Count - 1 = -1 Then
  10. '無資料
  11. Else
  12. '有資料
  13. End If
  14. Sql_DataSource.Dispose()