Struts2+JQuery(Ajax) 串連並讀取SQLServer資料

來源:互聯網
上載者:User

作為一個新手,對Struts2和Jquery的好感與日俱增。這兩天抽空總結了一下他們串連SQLServer資料庫的方法。親測可行。

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

資料庫名:test

資料表名:testTable,2個欄位(id,text)

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

struts.xml

<struts>
    <package name="myPackage" extends="json-default">
         <action name="connDB" class="com.connMSSQL">
             <result type="json"></result>
         </action>
     </package>
</struts> 

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

connDB.java

package com;
import java.sql.*;
public class connDB
{
    protected static Connection conn=null;    
    protected static final String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
    protected static final String URL="jdbc:sqlserver://localhost:1433; database=test";
    protected static final String NAME="sa";
    protected static final String PASSWORD="123";
    
    public Connection getDBConn()
    {
        /*
         * 這是用於串連SQLServer資料庫的公用類
         *
         * */
        try {
            Class.forName(DRIVER);
            conn=DriverManager.getConnection(URL,NAME,PASSWORD);
        }
        catch (ClassNotFoundException e)

        {
            e.printStackTrace();
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        return conn;
    }
}

==========================================================
connMSSQL.java
package com;
import java.sql.*;
import com.connDB;
import java.util.ArrayList;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import com.opensymphony.xwork2.ActionSupport;
public class connMSSQL extends ActionSupport
{

        /*
         * 本程式實現從資料庫中讀取資料,並把結果序列化為JSON格式,再以String類型傳遞給前台頁面
         *
         * */
    private String result;
    public String getResult()
    {
        return this.result;
    }
    public void setResult(String tmp)
    {
        this.result=tmp;
    }
        
    
    public String execute()
    {            
            ArrayList<String> recordSet = new ArrayList<String>();    //這個變數用於儲存中間結果                
            connDB myConnDB=new connDB(); //建立串連資料庫的類
            Connection myConn=myConnDB.getDBConn();  
 //調用類的方法實現資料庫連接
            try {                
                    ResultSet myRS=myConn.createStatement().executeQuery("select * from testTable");//建立並執行SQL語句,把結果放到ResultsSet變數中
                    if(myRS.wasNull())
                        this.result="no records";
                    else
                    {                        
                        int columnNum=myRS.getMetaData().getColumnCount();      
 //擷取結果集的列數        
                        while(myRS.next())
                        {
                            ArrayList<String> recordRow = new ArrayList<String>();//這個變數存放當前行的資料,每成功擷取一行就把它的結果放到recordSet變數中
                            for(int n=1;n<=columnNum;n++)
                            {
                                recordRow.add(myRS.getString(n));        //將當前行放到變數中                
                            }
                            JSONArray tmp=JSONArray.fromObject(recordRow); //把當前行的結果序列化為JSON格式
                            recordSet.add(tmp.toString());//把已經擷取的當前行資料放入中間結果變數中
                            recordRow.clear();//釋放當前行
                            tmp.clear();
                        }
                        
                        JSONArray jsonList = JSONArray.fromObject(recordSet);
//把已經產生的中間結果序列化為JSON格式                      
                        this.result= jsonList.toString();//將結果再轉換為String類型,用於向頁面傳遞,由頁面JS再將把結果轉換為JSOn格式 進行顯示                      

                        jsonList.clear();
                    }
                    myConn.close();
                    myRS.close();
                    recordSet.clear();
                    
                }
                catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }            
                return SUCCESS;
    }
}

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

index.jsp

    <script type="text/javascript" src="JS/jquery-1.9.1.min.js"></script>      
    <script type="text/javascript" src="JS/index.js"></script>

 瀏覽:<br/>
   <table id="mytable" border="1">    
        <tr>
            <td>編號</td>
            <td>內容</td>
            <td>刪除</td>
        </tr>            
    </table>

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

index.js

$(function(){    
             $.ajax({  
                        url:'connDB.action',  
                        type:'post',  
                        dataType:'json',       
                        success:function(serverDate)
                             {
                                var msg=eval("("+serverDate.result+")");//查詢結果格式轉換為JSON    ,這一句非常重要!
                                //////用自訂的表格顯示查詢內容                               
                                $.each(msg,function(i,item){
//msg為Action傳過來的結果,i為結果中當前行的索引號,item為存放有當前行資料的數組                                   
                                    $("#mytable").append("<tr onclick=chooserow("+item[0]+",'"+item[1]+"')><td>"+item[0]+"</td><td>"+item[1]+"</td><td><a href='javascript:deleteItem("+item[0]+")'>刪除</a></td></tr>");
                                })                                
                                //////表格顯示結束                                                           
                            }
                    }); 
})

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

最終結果:


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.