Struts2+JQuery(Ajax) 连接并读取SQLServer数据

来源:互联网 发布:淘宝刷単软件用哪个好 编辑:程序博客网 时间:2024/05/18 18:02

作为一个新手,对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>");
                                })                                
                                //////表格显示结束                                                           
                            }
                    }); 
})

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

最终结果:


原创粉丝点击