⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlserveradapter.java

📁 EasyJForum 是一个基于 Java 技术的免费社区论坛软件系统
💻 JAVA
字号:
package com.hongshee.ejforum.data.sql;

/**
 * <p>Title: SqlServerAdapter.java</p>
 * <p>Description: SqlServerAdapter</p>
 * <p>Copyright: Hongshee Software (c) 2007</p>
 * @author jackie du
 * @version 1.0
 */

import java.lang.reflect.Field;
import com.hongshee.ejforum.data.SqlAdapter;

public class SqlServerAdapter extends SqlAdapter 
{
    public SqlServerAdapter()
    {
    }

    public void init() throws Exception
    {
        Field[] fields = super.getClass().getFields();
        Object fieldValue = null;
        for (int i=0; i<fields.length; i++)
        {
            fieldValue = fields[i].get(this);
            if (fieldValue != null)
            {
                fields[i].set(this, fieldValue.toString().replace("NOW()", "GETDATE()"));
            }
        }
    }
    
    public String getPageQuerySql(StringBuilder sqlBuf, 
                                  int pageNo, int pageRows, int totalCount)
    {
        if (pageNo == 1)
        {
            int p = sqlBuf.indexOf("select");
            sqlBuf.insert(p+6, " TOP " + pageRows);
            return sqlBuf.toString();
        }
        else
        {
            int[] pageParams = getPageQueryParams(pageNo, pageRows, totalCount);
            
            int p = sqlBuf.indexOf("order by");
            String orderBy = sqlBuf.substring(p);
            String descOrderBy = 
                orderBy.replace("ASC","ASC1").replace("DESC", "ASC").replace("ASC1","DESC");
            
            p = sqlBuf.indexOf("select");
            sqlBuf.insert(p+6, " TOP " + pageParams[1]);
            sqlBuf.insert(0, "select * from (select TOP " + pageParams[0] + " * from (");
            sqlBuf.append(") page_a ").append(descOrderBy).append(") page_b ").append(orderBy);
            return sqlBuf.toString();
        }
    }
    
    protected int[] getPageQueryParams(int pageNo, int pageRows, int totalCount)
    {
        int[] result = new int[2];
        int offset = pageNo * pageRows;
        if (offset <= totalCount)
            result[0] = pageRows;
        else
        {
            result[0] = totalCount % pageRows;
            if (result[0] == 0)
                result[0] = pageRows;
        }
        result[1] = offset;
        return result;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -