1
package
com.onlysoft.txl;
2
3
/** */
/**
4
* <p>Title: </p>
5
*
6
* <p>Description: </p>
7
*
8
* <p>Copyright: Copyright (c) 2006</p>
9
*
10
* <p>Company: fishsoft</p>
11
*
12
* @author Danny
13
* @version 1.0
14
*/
15
16
import
org.apache.struts.action.Action;
17
import
javax.servlet.http.HttpServletRequest;
18
import
javax.servlet.http.HttpSession;
19
import
java.sql.
*
;
20
import
java.util.
*
;
21
import
com.onlysoft.txl.util.
*
;
22
import
javax.sql.DataSource;
23
import
org.apache.log4j.Logger;
24
25
public
class
BaseAction
extends
Action
{
26
public Connection conn = null;
27
public String userid = "";
28
public String username = "";
29
public String loginpwd = "";
30
public String realname = "";
31
public String mphone = "";
32
public boolean isLogin = false;
33
public DBUtil db;
34
public HttpSession session;
35
protected static Logger log = Logger.getLogger(BaseAction.class);
36
37
public void init(HttpServletRequest request)
{
38
39
session = request.getSession();
40
HashMap loginInfo = session.getAttribute("loginInfo")==null?null:(HashMap) session.getAttribute("loginInfo");
41
if (loginInfo != null && !loginInfo.isEmpty())
{
42
isLogin = true;
43
userid = (String) loginInfo.get("userid");
44
username = (String) loginInfo.get("username");
45
realname = (String) loginInfo.get("realname");
46
mphone = (String) loginInfo.get("mphone");
47
loginpwd = (String) loginInfo.get("loginpwd");
48
}
49
db = new DBUtil();
50
//log.info("test");
51
try
{
52
DataSource dataSource = getDataSource(request, "dataSource");
53
conn = dataSource.getConnection();
54
} catch (Exception ioe)
{
55
ioe.printStackTrace();
56
}
57
}
58
59
public Integer saveHelperMore(String tableName, String sOpType,
60
ObjectBean oPara, ObjectBean oWhere
61
) throws Exception
{
62
Integer iSize = new Integer(0);
63
try
{
64
//System.out.println("sOpType==========:" + sOpType);
65
if (sOpType.equals("insert"))
{
66
//System.out.println("oPara=========:" + oPara);
67
iSize = db.insOB(tableName, oPara, conn);
68
/**//*if (iSize == null || iSize.intValue() == 0) {
69
//this.toErrorInfo("表" + tableName + "保存失败!");
70
return;
71
}*/
72
} else if (sOpType.equals("update"))
{
73
iSize = db.updOB(tableName, oPara, oWhere, conn);
74
} else if (sOpType.equals("delete"))
{
75
iSize = db.delOB(tableName, oWhere, conn);
76
}
77
} catch (SQLException e)
{
78
//this.toErrorInfo("数据保存失败");
79
//return;
80
}
81
return iSize;
82
}
83
84
public void saveHelperMore(String count,
85
String tableName, String sOpType,
86
ObjectBean oWhere,
87
HttpServletRequest request) throws
88
Exception
{
89
Integer iSize;
90
try
{
91
for (int i = 0; i < Integer.parseInt(count); i++)
{
92
ObjectBean para = getPara(getTableColume(tableName),
93
Integer.toString(i), request);
94
if (sOpType.equals("insert"))
{
95
iSize = db.insOB(tableName, para, conn);
96
if (iSize == null || iSize.intValue() == 0)
{
97
//this.toErrorInfo("表" + tableName + "保存失败!");
98
return;
99
}
100
} else if (sOpType.equals("update"))
{
101
db.updOB(tableName, para, oWhere, conn);
102
} else if (sOpType.equals("delete"))
{
103
db.delOB(tableName, oWhere, conn);
104
}
105
}
106
} catch (SQLException e)
{
107
//this.toErrorInfo("数据保存失败");
108
return;
109
}
110
}
111
112
protected ObjectBean getPara(HashMap mp, String suffix,
113
HttpServletRequest request)
{
114
if (mp == null || mp.isEmpty())
{
115
return null;
116
}
117
ObjectBean para = new ObjectBean();
118
Vector data1 = mp.get("STRING") == null ? null :
119
(Vector) mp.get("STRING");
120
Vector data2 = mp.get("NOSTRING") == null ? null :
121
(Vector) mp.get("NOSTRING");
122
int count = 0;
123
if (data1 != null && !data1.isEmpty())
{
124
for (int i = 0; i < data1.size(); i++)
{
125
if (request.getParameter(data1.elementAt(i) + suffix) != null)
{
126
para.set(data1.elementAt(i),
127
request.getParameter(data1.elementAt(i) + suffix));
128
count++;
129
}
130
}
131
}
132
if (data2 != null && !data2.isEmpty())
{
133
for (int i = 0; i < data2.size(); i++)
{
134
Object xxx = request.getParameter(data2.elementAt(i) + suffix);
135
if (xxx != null && !xxx.equals(""))
{
136
para.set(data2.elementAt(i),
137
new StringBuffer("to_date('" +
138
xxx +
139
"','yyyy-mm-dd hh24:mi:ss')"));
140
count++;
141
}
142
}
143
}
144
if (count == 0)
{
145
para = null;
146
}
147
return para;
148
}
149
150
protected HashMap getTableColume(String tableName) throws
151
SQLException
{
152
HashMap para = new HashMap();
153
Vector para1 = new Vector(), para2 = new Vector();
154
ResultSetMetaData rs = null;
155
try
{
156
rs = conn.createStatement().executeQuery(
157
"select * from " + tableName + " where 1=2 ").
158
getMetaData();
159
int r = rs.getColumnCount();
160
for (int i = 1; i < r + 1; i++)
{
161
//System.out.println(rs.getColumnType(i));
162
if (rs.getColumnType(i) != 91)
{ //date
163
para1.add(rs.getColumnName(i));
164
} else
{
165
para2.add(rs.getColumnName(i));
166
}
167
}
168
para.put("STRING", para1);
169
para.put("NOSTRING", para2);
170
} catch (SQLException e)
{
171
e.printStackTrace();
172
throw e;
173
} finally
{
174
}
175
return para;
176
}
177
178
protected String getNextID(String sFieldName, String sTableName) throws
179
Exception
{
180
String sID = "";
181
try
{
182
ResultSet rs = null;
183
String sSql = "select max(" + sFieldName + ")+1 as id from " + sTableName +
184
"";
185
//System.out.println("getNextID====sSql========:" + sSql);
186
rs = (ResultSet) db.doSql(sSql, db.QUERY_MODE, conn);
187
if (rs.next())
{
188
sID = rs.getString(1);
189
if (sID == null)
{
190
sID = "1";
191
}
192
}
193
rs.close();
194
} catch (Exception ioe)
{
195
ioe.printStackTrace();
196
}
197
return sID;
198
}
199
200
protected void destroy()
{
201
try
{
202
if (conn != null)
{
203
conn.close();
204
conn = null;
205
}
206
} catch (Exception e)
{
207
e.printStackTrace();
208
}
209
}
210
211
212
213
214
215
216
217
218
219
220
}
221
数据库操作的!不多说!实在的代码!

2

3


4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25



26

27

28

29

30

31

32

33

34

35

36

37



38

39

40

41



42

43

44

45

46

47

48

49

50

51



52

53

54



55

56

57

58

59

60

61



62

63



64

65



66

67

68


69

70

71

72



73

74



75

76

77



78

79

80

81

82

83

84

85

86

87

88



89

90



91



92

93

94



95

96



97

98

99

100



101

102



103

104

105

106



107

108

109

110

111

112

113



114



115

116

117

118

119

120

121

122

123



124



125



126

127

128

129

130

131

132



133



134

135



136

137

138

139

140

141

142

143

144



145

146

147

148

149

150

151



152

153

154

155



156

157

158

159

160



161

162



163

164



165

166

167

168

169

170



171

172

173



174

175

176

177

178

179



180

181



182

183

184

185

186

187



188

189



190

191

192

193

194



195

196

197

198

199

200



201



202



203

204

205

206



207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

1
package
com.onlysoft.txl.util;
2
3
/** */
/**
4
* <p>Title: </p>
5
*
6
* <p>Description: </p>
7
*
8
* <p>Copyright: Copyright (c) 2006</p>
9
*
10
* <p>Company: fishsoft</p>
11
*
12
* @author Danny
13
* @version 1.0
14
*/
15
import
java.sql.
*
;
16
import
javax.sql.
*
;
17
import
java.util.
*
;
18
import
java.io.
*
;
19
import
java.math.BigDecimal;
20
21
public
class
DBUtil
{
22
23
public final static int INSERT_MODE = 0;
24
public final static int UPDATE_MODE = 1;
25
public final static int DELETE_MODE = 2;
26
public final static int QUERY_MODE = 3;
27
public final static int MODIFY_MODE = 4;
28
29
private static final String sSeperator = ";";
30
private static final String sDatePattern = "yyyy/MM/dd";
31
private static final String sDateTimePattern = "yyyy/MM/dd hh:mm:ss S";
32
private String sTp = "java.math.BigDecimal;java.lang.Integer;java.lang.Double;java.lang.Float;java.lang.StringBuffer;";
33
34
private DataSource oDs;
35
// private Connection oCon;
36
boolean DEBUG = true;
37
private Statement oSt = null;
38
39
public DBUtil()
{
40
41
}
42
43
private Integer modify(String s_sql, Connection oCont) throws Exception
{
44
Integer iRs = null;
45
if (oSt != null)
{
46
oSt.close();
47
oSt = null;
48
}
49
try
{
50
oSt = oCont.createStatement();
51
iRs = new Integer(oSt.executeUpdate(s_sql));
52
} catch (SQLException sqle)
{
53
throw sqle;
54
}
55
return iRs;
56
}
57
58
private ResultSet query(String s_sql, Connection oCont) throws Exception
{
59
ResultSet oRs = null;
60
if (oSt != null)
{
61
oSt.close();
62
oSt = null;
63
}
64
try
{
65
oSt = oCont.createStatement();
66
oRs = oSt.executeQuery(s_sql);
67
} catch (SQLException sqle)
{
68
throw sqle;
69
}
70
return oRs;
71
}
72
73
public Object doSql(String sSql, int i_mode, Connection oCont) throws
74
Exception
{
75
try
{
76
switch (i_mode)
{
77
case INSERT_MODE:
78
case UPDATE_MODE:
79
case DELETE_MODE:
80
return modify(sSql, oCont);
81
case QUERY_MODE:
82
return query(sSql, oCont);
83
}
84
} catch (Exception e)
{
85
throw e;
86
}
87
return null;
88
}
89
90
public Integer insOB(String tableName, ObjectBean res, Connection oCont) throws
91
Exception
{
92
// res.canDB();
93
try
{
94
String sql = "";
95
sql = "INSERT INTO " + tableName + " ( ";
96
Enumeration en = res.keys();
97
boolean f = false;
98
String key = "", val = "";
99
while (en.hasMoreElements())
{
100
if (f)
{
101
key += ", ";
102
val += ", ";
103
} else
{
104
f = true;
105
}
106
String k = (String) en.nextElement();
107
key += k;
108
String tp = res.get(k).getClass().getName();
109
if (this.sTp.indexOf(tp + ";") >= 0)
{
110
val += "" + res.get(k) + "";
111
} else
{
112
String temp = res.get(k)+"";
113
if (temp.equals("getdate()"))
114
val += "" + temp + "";
115
else
116
val += "'" + temp + "'";
117
}
118
}
119
sql += key + ") VALUES (" + val + ")";
120
121
//System.out.println("real sql:"+sql);
122
123
return (Integer)this.doSql(sql, this.INSERT_MODE, oCont);
124
} catch (Exception e)
{
125
e.printStackTrace();
126
throw e;
127
}
128
}
129
130
public Integer updOB(String tableName, ObjectBean res, ObjectBean where,
131
Connection oCont) throws Exception
{
132
// res.canDB();
133
try
{
134
String sql = "";
135
sql = "UPDATE " + tableName + " SET ";
136
Enumeration en = res.keys();
137
boolean f = false;
138
while (en.hasMoreElements())
{
139
if (f)
{
140
sql += ", ";
141
} else
{
142
f = true;
143
}
144
String k = (String) en.nextElement();
145
String tp = res.get(k).getClass().getName();
146
if (this.sTp.indexOf(tp + ";") >= 0)
{
147
sql += k + "=" + "" + res.get(k) + "";
148
} else
{
149
sql += k + "=" + "'" + res.get(k) + "'";
150
}
151
}
152
sql += " WHERE ";
153
154
en = where.keys();
155
f = false;
156
while (en.hasMoreElements())
{
157
if (f)
{
158
sql += "and ";
159
} else
{
160
f = true;
161
}
162
String k = (String) en.nextElement();
163
String tp = where.get(k).getClass().getName();
164
if (this.sTp.indexOf(tp + ";") >= 0)
{
165
sql += k + "=" + "" + where.get(k) + "";
166
} else
{
167
sql += k + "=" + "'" + where.get(k) + "'";
168
}
169
}
170
171
return (Integer)this.doSql(sql, this.UPDATE_MODE, oCont);
172
} catch (Exception e)
{
173
e.printStackTrace();
174
throw e;
175
}
176
}
177
178
public Integer delOB(String tableName, ObjectBean where, Connection oCont) throws
179
Exception
{
180
try
{
181
String sql = "";
182
sql = "DELETE FROM " + tableName + " WHERE ";
183
184
Enumeration en = where.keys();
185
boolean f = false;
186
while (en.hasMoreElements())
{
187
if (f)
{
188
sql += "and ";
189
} else
{
190
f = true;
191
}
192
String k = (String) en.nextElement();
193
String tp = where.get(k).getClass().getName();
194
if (this.sTp.indexOf(tp + ";") >= 0)
{
195
sql += k + "=" + "" + where.get(k) + "";
196
} else
{
197
sql += k + "=" + "'" + where.get(k) + "'";
198
}
199
}
200
201
return (Integer)this.doSql(sql, this.DELETE_MODE, oCont);
202
} catch (Exception e)
{
203
e.printStackTrace();
204
throw e;
205
}
206
}
207
208
public ResultSet queOB(String tableName, String res, ObjectBean where,
209
Connection oCont) throws Exception
{
210
try
{
211
String sql = "";
212
sql = "SELECT " + res + " FROM " + tableName + " where ";
213
214
Enumeration en = where.keys();
215
boolean f = false;
216
while (en.hasMoreElements())
{
217
if (f)
{
218
sql += "and ";
219
} else
{
220
f = true;
221
}
222
String k = (String) en.nextElement();
223
String tp = where.get(k).getClass().getName();
224
if (this.sTp.indexOf(tp + ";") >= 0)
{
225
sql += k + "=" + "" + where.get(k) + "";
226
} else
{
227
sql += k + "=" + "'" + where.get(k) + "'";
228
}
229
}
230
231
return (ResultSet)this.doSql(sql, this.QUERY_MODE, oCont);
232
} catch (Exception e)
{
233
e.printStackTrace();
234
throw e;
235
}
236
}
237
238
public static Vector getHashMapVByRSDec(ResultSet rs) throws Exception
{
239
Vector resV = new Vector();
240
try
{
241
if (rs != null)
{
242
int count = 0;
243
Vector vColumnName = new Vector();
244
Vector vGetByType = new Vector();
245
while (rs.next())
{
246
ObjectBean ob = new ObjectBean();
247
if (count == 0)
{
248
ResultSetMetaData rsm = rs.getMetaData();
249
count = rsm.getColumnCount();
250
for (int i = 1; i < count + 1; i++)
{
251
Object oCn = rsm.getColumnName(i);
252
String sSt = rsm.getColumnTypeName(i);
253
vColumnName.addElement(oCn);
254
vGetByType.addElement(sSt);
255
ob.set(oCn, sqlGetByTypeDec(sSt, i, rs));
256
}
257
} else
{
258
for (int i = 1; i < count + 1; i++)
{
259
ob.set(vColumnName.elementAt(i - 1),
260
sqlGetByTypeDec( (String) vGetByType.elementAt(i -
261
1),
262
i, rs));
263
}
264
}
265
resV.addElement(ob);
266
}
267
}
268
} catch (Exception e)
{
269
e.printStackTrace();
270
throw e;
271
} finally
{
272
try
{
273
if (rs != null)
{
274
rs.close();
275
}
276
} catch (Exception e)
{
277
e.printStackTrace();
278
throw e;
279
}
280
}
281
return resV;
282
}
283
284
public static HashMap getHashMapByRS(ResultSet rs) throws Exception
{
285
HashMap resH = new HashMap();
286
try
{
287
if (rs != null)
{
288
int count = 0;
289
Vector vColumnName = new Vector();
290
Vector vGetByType = new Vector();
291
if (rs.next())
{
292
if (count == 0)
{
293
ResultSetMetaData rsm = rs.getMetaData();
294
count = rsm.getColumnCount();
295
for (int i = 1; i < count + 1; i++)
{
296
Object oCn = rsm.getColumnName(i);
297
String sSt = rsm.getColumnTypeName(i);
298
vColumnName.addElement(oCn);
299
vGetByType.addElement(sSt);
300
resH.put(oCn, sqlGetByTypeDec(sSt, i, rs));
301
}
302
} else
{
303
for (int i = 1; i < count + 1; i++)
{
304
resH.put(vColumnName.elementAt(i - 1),
305
sqlGetByTypeDec( (String) vGetByType.elementAt(i -
306
1),
307
i, rs));
308
}
309
}
310
}
311
}
312
} catch (Exception e)
{
313
e.printStackTrace();
314
throw e;
315
} finally
{
316
try
{
317
if (rs != null)
{
318
rs.close();
319
}
320
} catch (Exception e)
{
321
e.printStackTrace();
322
throw e;
323
}
324
}
325
return resH;
326
}
327
328
public static List getListByRS(ResultSet rs) throws Exception
{
329
List list = new ArrayList();
330
331
try
{
332
if (rs != null)
{
333
while (rs.next())
{
334
HashMap resH = new HashMap();
335
int count = 0;
336
Vector vColumnName = new Vector();
337
Vector vGetByType = new Vector();
338
if (count == 0)
{
339
ResultSetMetaData rsm = rs.getMetaData();
340
count = rsm.getColumnCount();
341
for (int i = 1; i < count + 1; i++)
{
342
Object oCn = rsm.getColumnName(i);
343
String sSt = rsm.getColumnTypeName(i);
344
vColumnName.addElement(oCn);
345
vGetByType.addElement(sSt);
346
resH.put(oCn, sqlGetByTypeDec(sSt, i, rs));
347
}
348
} else
{
349
for (int i = 1; i < count + 1; i++)
{
350
resH.put(vColumnName.elementAt(i - 1),
351
sqlGetByTypeDec( (String) vGetByType.elementAt(i -
352
1),
353
i, rs));
354
}
355
}
356
// System.out.println("hashmap value:"+resH);
357
list.add(resH);
358
}
359
}
360
} catch (Exception e)
{
361
e.printStackTrace();
362
throw e;
363
} finally
{
364
try
{
365
if (rs != null)
{
366
rs.close();
367
}
368
} catch (Exception e)
{
369
e.printStackTrace();
370
throw e;
371
}
372
}
373
return list;
374
}
375
376
public static Object sqlGetByTypeDec(String eleType, int no, ResultSet rs) throws
377
Exception
{
378
Object r = new Object();
379
try
{
380
if (eleType.equalsIgnoreCase("datetime"))
{
381
r = rs.getDate(no);
382
} else if (eleType.equalsIgnoreCase("date"))
{
383
r = rs.getDate(no);
384
} else if (eleType.equalsIgnoreCase("bigint") ||
385
eleType.equalsIgnoreCase("smallint") ||
386
eleType.equalsIgnoreCase("LONGLONG")
387
|| eleType.equalsIgnoreCase("SHORT")
388
|| eleType.equalsIgnoreCase("INTEGER"))
{
389
String ii = rs.getString(no);
390
r = ii == null ? null : new Integer(ii);
391
} else if (eleType.equalsIgnoreCase("boolean"))
{
392
r = new Boolean(rs.getBoolean(no));
393
} else if (eleType.equalsIgnoreCase("float"))
{
394
r = new Float(rs.getFloat(no));
395
} else if (eleType.equalsIgnoreCase("DECIMAL") ||
396
eleType.equalsIgnoreCase("NUMBER"))
{
397
String s = rs.getString(no);
398
r = new BigDecimal(s == null || s.equals("") ? "0.00" : s);
399
} else if (eleType.equalsIgnoreCase("CLOB"))
{
400
Clob value = rs.getClob(no);
401
if (value != null && value.length() > 0)
{
402
return value.getSubString( (long) 1, (int) value.length());
403
}
404
} else
{
405
r = rs.getString(no);
406
}
407
} catch (Exception e)
{
408
e.printStackTrace();
409
throw e;
410
}
411
if (r == null)
{
412
r = "";
413
}
414
return r;
415
}
416
417
}
418

2

3


4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21



22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39



40

41

42

43



44

45



46

47

48

49



50

51

52



53

54

55

56

57

58



59

60



61

62

63

64



65

66

67



68

69

70

71

72

73

74



75



76



77

78

79

80

81

82

83

84



85

86

87

88

89

90

91



92

93



94

95

96

97

98

99



100



101

102

103



104

105

106

107

108

109



110

111



112

113

114

115

116

117

118

119

120

121

122

123

124



125

126

127

128

129

130

131



132

133



134

135

136

137

138



139



140

141



142

143

144

145

146



147

148



149

150

151

152

153

154

155

156



157



158

159



160

161

162

163

164



165

166



167

168

169

170

171

172



173

174

175

176

177

178

179



180



181

182

183

184

185

186



187



188

189



190

191

192

193

194



195

196



197

198

199

200

201

202



203

204

205

206

207

208

209



210



211

212

213

214

215

216



217



218

219



220

221

222

223

224



225

226



227

228

229

230

231

232



233

234

235

236

237

238



239

240



241



242

243

244

245



246

247



248

249

250



251

252

253

254

255

256

257



258



259

260

261

262

263

264

265

266

267

268



269

270

271



272



273



274

275

276



277

278

279

280

281

282

283

284



285

286



287



288

289

290

291



292



293

294

295



296

297

298

299

300

301

302



303



304

305

306

307

308

309

310

311

312



313

314

315



316



317



318

319

320



321

322

323

324

325

326

327

328



329

330

331



332



333



334

335

336

337

338



339

340

341



342

343

344

345

346

347

348



349



350

351

352

353

354

355

356

357

358

359

360



361

362

363



364



365



366

367

368



369

370

371

372

373

374

375

376

377



378

379



380



381

382



383

384

385

386

387

388



389

390

391



392

393



394

395

396



397

398

399



400

401



402

403

404



405

406

407



408

409

410

411



412

413

414

415

416

417

418
