NC 數據庫操作


一、后台數據庫操作方法(private端):

1.以下為后台查詢方法

BaseDAO dao = new BaseDAO();//只能在private端使用

String querySql="select * from demo_quotation where dr = 0";//完整正確的sql語句

 

Object result1 = dao.executeQuery("select vbillcode from demo_quotation where pk_salequotation='某個主鍵'", new ColumnProcessor());//查詢語句只能返回一行一列結果

 

List<Object[]> result2 = (List<Object[]>) dao.executeQuery(querySql, new ArrayListProcessor());//查詢語句可以返回多行多列

//for(Object[] obj : result2){ obj[0]...obj[n]}

 

Map<String, Object> result3 = (Map<String, Object>) dao.executeQuery("select * from demo_quotation where pk_salequotation='某個主鍵'", new MapProcessor());//查詢語句只返回一行結果

 

List<Map<String,String>> result4 = (List<Map<String, String>>) dao.executeQuery(querySql, new MapListProcessor());//查詢語句可以返回多行結果

//for(Map<String,String> map : result4){map.get("字段名")}

 

QuotationHVO result5 = (QuotationHVO) dao.executeQuery("select * from

demo_quotation where pk_salequotation='某個主鍵'", new BeanProcessor(QuotationHVO.class));//查詢語句只返回一個VO

 

List<QuotationHVO> result6 = (List<QuotationHVO>) dao.executeQuery(querySql,new BeanListProcessor(QuotationHVO.class));//查詢語句返回多個VO

 

Set<String> result =

(Set<String>) dao.executeQuery(sql, new BaseProcessor() {

private static final long serialVersionUID = 1L;

@Override

public Object processResultSet(ResultSet rs) throws SQLException {

Set<String> result = new HashSet<String>();

String cproductid = null;

while (rs.next()) {

cproductid = rs.getString("cproductid");

result.add(cproductid);

}

return result;

}

});

return result;

}

 

2.以下為新增更新刪除方法(手寫sql)

dao.executeUpdate("sql");

 

二、前台數據庫操作方法(client端):

IUAPQueryBS bs = NCLocator.getInstance().lookup(IUAPQueryBS.class);

bs.executeQuery(sql, processor);//processor跟第一點的basedao用法一致

 

三、

//后台通過主表主鍵查詢aggvo

BillQuery<AggPromoPolicyVO> query = new BillQuery<>(AggPromoPolicyVO.class);

query .query(keys);

//前台通過主表主鍵查詢aggvo

HYPubBO_Client.queryBillVOByPrimaryKey(class, hids)

//或者前后台都能用

IBillQueryService billQuery = NCLocator.getInstance().lookup(IBillQueryService.class);

 

以下例子可以防SQL注入(前后台都有個SQLParameter 參數能使用)

StringBuilder sql = new StringBuilder();

sql.append("select * from esoc_dispatchrecgoods ")

.append(" where dispatchnoteid=?").append(" and dr=?");

 

SQLParameter param = new SQLParameter();

param.addParam(pk_dispatchnoteid);

param.addParam(0);

List<DispatchRecGoodsVO> drgvoList = (List<DispatchRecGoodsVO>) dao

.executeQuery(sql.toString(), param, new BeanListProcessor(

DispatchRecGoodsVO.class))

 

 


 

 

 

 用友前台CURD操作
前台提供兩個主要接口進行CURD操作:
IVOPersistence  該接口只支持前台增刪改操作
IUAPQueryBS   該接口主要支持前台的查詢操作
有了這兩個接口,就省去了寫后台接口的步驟,但是具體的操作還是要視情況而定。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM