xlang v4.0 Release
程序设计语言基础库文档
载入中...
搜索中...
未找到
AdoConnector.xcsm
浏览该文件的文档.
1//xlang Source, Name:SqlServer.xcsm
2//Date: Sat Sep 12:06:04 2019
3
4class AdoConnector : Sql.Connection{
5
6 long hAdo;
7
8 int port = 1433;
9 int timeout = 0;
10
11 public enum MysqlOption{
15 SELECTDB
16 };
17
18 public AdoConnector(){
19 if (_system_.getPlatformId() != 0){
20 throw new IllegalArgumentException("ADO not support this Operating System!");
21 }
22 }
23 /*static class MysqlRegister : Sql.ConnectionRegister{
24 Sql.Connection allocConnection(String drivername){
25 if (drivername.equals("mysql")){
26 return new AdoConnector();
27 }
28 return nilptr;
29 }
30 };
31
32 static bool registry(){
33 if (Helper.init()){
34 Sql.Database.reigstry(DRIVERNAME, new MysqlRegister());
35 return true;
36 }
37 return false;
38 }
39 */
40 protected static class Helper :Library {
41 static bool bloaded = false;
42 public static bool init(){
43
44 if (bloaded == false){
45 try{
46 loadLibrary("adohelper");
47 bloaded = true;
48 }catch(Exception e){
50 }
51 }
52 return bloaded;
53 }
54
55 public import{
56 Pointer cdecl ado_alloc(String driver, String host, int port, String name, String pwd, int timeout, ObjectPtr, ObjectRef);
57 void cdecl ado_delloc(Pointer);
58 Pointer cdecl ado_execute(Pointer, String sql, bool needrs, ObjectPtr, ObjectRef);
59 void cdecl ado_delloc_rs(Pointer);
60
61 bool cdecl ado_rs_next(Pointer);
62 bool cdecl ado_rs_prev(Pointer);
63
64 bool cdecl ado_rs_first(Pointer);
65 bool cdecl ado_rs_last(Pointer);
66 int cdecl ado_rs_count(Pointer);
67 bool cdecl ado_rs_iseof(Pointer);
68
69 Object cdecl ado_rs_getValue(Pointer, String);
70 int cdecl ado_rs_getValueI(Pointer, String);
71 long cdecl ado_rs_getValueL(Pointer, String);
72 double cdecl ado_rs_getValueD(Pointer, String);
73
74 Object cdecl ado_rs_getIValue(Pointer, int);
75 int cdecl ado_rs_getIValueI(Pointer, int);
76 long cdecl ado_rs_getIValueL(Pointer, int);
77 double cdecl ado_rs_getIValueD(Pointer, int);
78 };
79 };
80
81 public static class AdoResultSet : Sql.ResultSet{
82 long hres;
83
84 public AdoResultSet(long r){
85 hres = r;
86 }
87
88 public bool first()override{
89 return Helper.ado_rs_first(hres);
90 }
91
92 public bool last()override{
93 return Helper.ado_rs_last(hres);
94 }
95
96 public bool next()override{
97 return Helper.ado_rs_next(hres);
98 }
99
100 public bool previous()override{
101 return Helper.ado_rs_prev(hres);
102 }
103
104 public bool isFirst()override{
105 throw new Sql.DatabaseNotSupportException("isFirst");
106 return false;
107 }
108
109 public bool isLast()override{
110 throw new Sql.DatabaseNotSupportException("isLast");
111 return false;
112 }
113
114 public bool isEof()override{
115 return Helper.ado_rs_iseof(hres);
116 }
117
118 public bool isValid()override{
119 return hres != 0;
120 }
121
122 public int getInt(String columnlabel)override{
123 return Helper.ado_rs_getValueI(hres, columnlabel);
124 }
125
126 public long getLong(String columnlabel)override{
127 return Helper.ado_rs_getValueL(hres, columnlabel);
128 }
129
130 public double getDouble(String columnlabel)override{
131 return Helper.ado_rs_getValueD(hres, columnlabel);
132 }
133
134 public byte getByte(String columnlabel)override{
135 return Helper.ado_rs_getValueI(hres, columnlabel);
136 }
137
138 public bool getBoolean(String columnlabel)override{
139 return Helper.ado_rs_getValueI(hres, columnlabel) != 0;
140 }
141
142 public String getString(String columnlabel)override{
143 return (String)Helper.ado_rs_getValue(hres, columnlabel);
144 }
145
146 public int getInt(int columnIndex)override{
147 return Helper.ado_rs_getIValueI(hres, columnIndex);
148 }
149
150 public long getLong(int columnIndex)override{
151 return Helper.ado_rs_getIValueL(hres, columnIndex);
152 }
153
154 public double getDouble(int columnIndex)override{
155 return Helper.ado_rs_getIValueD(hres, columnIndex);
156 }
157
158 public byte getByte(int columnIndex)override{
159 return Helper.ado_rs_getIValueI(hres, columnIndex);
160 }
161
162 public bool getBoolean(int columnIndex)override{
163 return Helper.ado_rs_getIValueI(hres, columnIndex) != 0;
164 }
165
166 public String getString(int columnIndex)override{
167 return (String)Helper.ado_rs_getIValue(hres, columnIndex);
168 }
169
170 public int findColumn(String)override{
171 throw new Sql.DatabaseNotSupportException("findColumn");
172 return -1;
173 }
174
175 public int getColumnCount()override{
176 throw new Sql.DatabaseNotSupportException("getColumnCount");
177 return -1;
178 }
179
180 public String getColumnName(int i){
181 throw new Sql.DatabaseNotSupportException("getColumnName");
182 return nilptr;
183 }
184
185 public long getRowCount()override{
186 return Helper.ado_rs_count(hres);
187 }
188
189 public int getRow()override{
190 throw new Sql.DatabaseNotSupportException("getRow");
191 return 0;
192 }
193
194 public void close()override{
195 if (hres != 0){
196 Helper.ado_delloc_rs(hres);
197 hres = 0;
198 }
199 }
200
201 void finalize(){
202 close();
203 }
204 };
205
206 static class AdoStatement : Sql.Statement{
208
210 __ado = m;
211 }
212
213 public int execute(String sql)override{
214 int errcode = 0;
215 String errmsg = nilptr;
216
217 long hrs = Helper.ado_execute(__ado.hAdo,sql, false, errcode, errmsg);
218 if (0 == hrs){
219 throw new Sql.SqlException(errcode, errmsg);
220 }else{
221 Helper.ado_delloc_rs(hrs);
222 }
223 return 0;
224 }
225 public int get_changes()override{
226 throw new SqlException(-1, "get_changes");
227 return 0;
228 }
229 public Sql.ResultSet executeQuery(String sql)override{
230 int errcode = 0;
231 String errmsg = nilptr;
232 long hrs = Helper.ado_execute(__ado.hAdo,sql, true, errcode, errmsg);
233 if (0 == hrs){
234 throw new Sql.SqlException(errcode, errmsg);
235 }
236 return new AdoResultSet(hrs);
237 }
238
239 public int executeUpdate(String sql)override{
240 int errcode = 0;
241 String errmsg = nilptr;
242 long hrs = Helper.ado_execute(__ado.hAdo,sql, false, errcode, errmsg);
243 if (0 == hrs){
244 throw new Sql.SqlException(errcode, errmsg);
245 }else{
246 Helper.ado_delloc_rs(hrs);
247 }
248 return 0;
249 }
250
251 public Sql.ResultSet getResult()override{ throw new Sql.DatabaseNotSupportException("getResult"); return nilptr; }
252
253 public void close()override{ }
254 };
255
256
257 public class AdoPreparedStatement : Sql.PreparedStatement{
259
261 super(sql);
262 __ado = m;
263 }
264
265 public int execute(String sql)override{
266 int errcode = 0;
267 String errmsg = nilptr;
268 long hrs = Helper.ado_execute(__ado.hAdo,sql, false, errcode, errmsg);
269 if (0 == hrs){
270 throw new Sql.SqlException(errcode, errmsg);
271 }else{
272 Helper.ado_delloc_rs(hrs);
273 }
274 return 0;
275 }
276
277 public Sql.ResultSet executeQuery(String sql)override{
278 int errcode = 0;
279 String errmsg = nilptr;
280 long hrs = Helper.ado_execute(__ado.hAdo,sql, false, errcode, errmsg);
281 if (0 == hrs){
282 throw new Sql.SqlException(errcode, errmsg);
283 }
284 return new AdoResultSet(hrs);
285 }
286
287 public int executeUpdate(String sql)override{
288 int errcode = 0;
289 String errmsg = nilptr;
290 long hrs = Helper.ado_execute(__ado.hAdo,sql, false, errcode, errmsg);
291 if (0 == hrs){
292 throw new Sql.SqlException(errcode, errmsg);
293 }else{
294 Helper.ado_delloc_rs(hrs);
295 }
296 return 0;
297 }
298
299 public Sql.ResultSet getResult()override{ throw new Sql.DatabaseNotSupportException("getResult"); return nilptr; }
300
301 public void close()override{
302
303 }
304 };
305
306
307 public void close() override {
308 //TODO:
309 if (hAdo != 0){
310 Helper.ado_delloc(hAdo);
311 hAdo = 0;
312 }
313 }
314
315 void finalize(){
316 close();
317 }
318
320
321 public void setDriver(String strDrv){
322 driver = strDrv;
323 }
324
325 public void create(String uri, String username, String pwd) override {
326
327 if (driver == nilptr){
328 throw new Sql.SqlException(-1, "driver is nilptr");
329 }
330 int errcode = 0;
331 String errmsg = nilptr;
332
333 hAdo = Helper.ado_alloc(driver, uri, port, username, pwd, timeout, errcode, errmsg);
334
335 if (0l == hAdo){
336 throw new Sql.SqlException(errcode, errmsg);
337 }
338 }
339
340 public bool isClosed() override {
341 //TODO:
342 return hAdo != 0;
343 }
344
345
346 public int getErrorCode()override{
347 //throw new Sql.DatabaseNotSupportException("getErrorCode");
348 return 0;
349 }
350
351 public String getError()override{
352 throw new Sql.DatabaseNotSupportException("getError");
353 return nilptr;
354 }
355
357 throw new Sql.DatabaseNotSupportException("getSqlState");
358 return nilptr;
359 }
360
361 public String getInfo(){
362 throw new Sql.DatabaseNotSupportException("getInfo");
363 return nilptr;
364 }
365
366 public Object getOption(int opt) override {
367 //TODO:
368 throw new Sql.DatabaseNotSupportException("getOption");
369 return nilptr;
370 }
371
372 public void setOption(int opt, Object option) override {
373 switch(opt){
374 case MysqlOption.PORT:
375 port = (int)option;
376 break;
377 case MysqlOption.TIMEOUT:
378 timeout = (int)option;
379 break;
380 default:
381 throw new Sql.DatabaseNotSupportException("getOption");
382 break;
383 }
384 }
385
386 public Sql.Statement createStatement() override {
387 return new AdoStatement(this);
388 }
389
391 return new AdoPreparedStatement(this, sql);
392 }
393};
系统和IO相关
static final int getPlatformId()
static final void output(String)
int execute(String sql) override
AdoPreparedStatement(AdoConnector m, String sql)
Sql.ResultSet executeQuery(String sql) override
int executeUpdate(String sql) override
Sql.ResultSet getResult() override
String getString(int columnIndex) override
String getString(String columnlabel) override
bool getBoolean(int columnIndex) override
int getColumnCount() override
double getDouble(String columnlabel) override
long getRowCount() override
int getInt(String columnlabel) override
long getLong(int columnIndex) override
int findColumn(String) override
double getDouble(int columnIndex) override
byte getByte(String columnlabel) override
long getLong(String columnlabel) override
bool getBoolean(String columnlabel) override
byte getByte(int columnIndex) override
int getInt(int columnIndex) override
int execute(String sql) override
Sql.ResultSet executeQuery(String sql) override
int executeUpdate(String sql) override
Sql.ResultSet getResult() override
static bool init()
int getErrorCode() override
void close() override
void create(String uri, String username, String pwd) override
Object getOption(int opt) override
void setDriver(String strDrv)
bool isClosed() override
String getSqlState()
Sql.Statement createStatement() override
Sql.PreparedStatement prepareStatement(String sql) override
void setOption(int opt, Object option) override
String getError() override
异常类
final String getMessage()
static final void loadLibrary(String)
字符串类
Definition xsql.xcs:3