| | |
| | | return querySQL(db, sql, nvParams);
|
| | | }
|
| | |
|
| | | public int executeSQL(String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
|
| | | return executeSQL(db, sql, nvParams);
|
| | | }
|
| | | |
| | | public int executeSQL(String dsId, String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | SMTDatabase db = SMTAIServerApp.getApp().getDataSource(dsId).allocDatabase();
|
| | | return executeSQL(db, sql, nvParams);
|
| | | }
|
| | |
|
| | | |
| | | private int executeSQL(SMTDatabase db, String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | List<Object> sqlParams = new ArrayList<>();
|
| | | List<NativeObject> listRecs = new ArrayList<>();
|
| | | try
|
| | | {
|
| | | // 解析出原始sql
|
| | | String rawSQL = SMTStatic.stringFormat(sql, new SMTStatic.StringNamedNotify()
|
| | | {
|
| | | @Override
|
| | | public Object getNamedValue(String name, Object[] args) throws Exception |
| | | {
|
| | | char type;
|
| | | String value = SMTStatic.toString(SMTAIServerApp.getJSValue(nvParams, name));
|
| | | if(value.length() == 1)
|
| | | {
|
| | | type = value.charAt(0);
|
| | | value = "";
|
| | | }
|
| | | else
|
| | | {
|
| | | type = value.charAt(0);
|
| | | value = value.substring(1);
|
| | | |
| | | }
|
| | | |
| | | Object ovalue;
|
| | | |
| | | switch(type)
|
| | | {
|
| | | case 'N':
|
| | | ovalue = null;
|
| | | break;
|
| | | |
| | | case 'I':
|
| | | ovalue = SMTStatic.toInt(value);
|
| | | break;
|
| | | |
| | | case 'D':
|
| | | ovalue = SMTStatic.toDouble(value);
|
| | | break;
|
| | | |
| | | case 'L':
|
| | | ovalue = SMTStatic.toLong(value);
|
| | | break;
|
| | | |
| | | case 'T':
|
| | | ovalue = SMTStatic.toDate(value);
|
| | | break;
|
| | | |
| | | default:
|
| | | ovalue = value;
|
| | | break;
|
| | | }
|
| | | |
| | | sqlParams.add(ovalue);
|
| | | return "?";
|
| | | }
|
| | | });
|
| | | |
| | |
|
| | | // 执行查询
|
| | | int ret = db.executeSQL(rawSQL, sqlParams.toArray(new Object[sqlParams.size()]));
|
| | | |
| | | return ret;
|
| | | }
|
| | | finally
|
| | | {
|
| | | db.close();
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | private NativeArray querySQL(SMTDatabase db, String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | List<Object> sqlParams = new ArrayList<>();
|