遇到的一些数据库操作语句
时间:2011-03-11 来源:-=吥许 离开
1、往dic_tracktosection表中插入数据,其中node_id、gdh、xh为外键,而node、gdm、xm分别为关联表的字段
insert into dic_tracktosection (id,node,node_id,gdh,gdm,xm,xh,con_type)
select s_dic_tracktosection.nextval(为squences,主键自增),a.node_name,a.node_id,b.track_id,b.gdm,
c.xm,c.xh,? from (select NODE_ID,NODE_NAME from DIC_NODE where NODE_ID=?) a,
(select Track_id,gdm from dic_node_track where Track_id=?) b,
(select xm,xh from dic_rail_section where xh=?) c
2、插入数据主键的id为当前最大的id+1的写法
INSERT INTO dic_rela_railline_node (ID,LINE_ID,node_name,NODE_ID) select maxid, 2, 'aa', 3 from (select max(id)+1 as maxid from dic_rela_railline_node)
也可以用一个方法Sqldo_Get_MaxID,调用这个方法返回最大的ID , 但注意的是,如果数据库里没有记录,上面的方法就不好使了!
/*
* 查询指定表中指定字段最大的ID值
*/
public int Sqldo_Get_MaxID(String field, String TableName) {
OracledbOperationService oraService2 = new OracledbOperationService(); // 新建数据库链接
ResultSet rs = null;
String sqlString = "select max(" + field+ ")" + FieldName + " from " + TableName;
System.out.println("查询最大ID的SQL字符串sqlString为:" + sqlString);
rs = oraService2.executeQuery(sqlString);
String MaxIDString = "";
int MaxID = 0;
try {
while (rs.next()) {
MaxIDString = rs.getString(field);
System.out.println("MaxIDString字符串为:" + MaxIDString);
if (MaxIDString != null) {
MaxID = Integer.parseInt(MaxIDString);
} else {
MaxID = 0;
}
}
} catch (Exception e) {
e.printStackTrace();
}
oraService2.close();
System.out.println("=======================");
return MaxID;
}
3、如果得到的时间是String类型的,但数据库要插入的是Data类型的,可以在确定字符串正确以后做如下操作
INSERT INTO dic_railline (line_id,LINE_NAME,Start_use_time, Start_station) values (6,'aaa',TO_date('19990828','yyyy-mm-dd'),'aaa')