📄 dbserver.java~19~
字号:
package com.gps.center.dataservice;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
import org.enhydra.jdbc.pool.StandardPoolDataSource;
import org.enhydra.jdbc.standard.StandardConnectionPoolDataSource;
import org.enhydra.jdbc.standard.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.GregorianCalendar;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import com.gps.center.dataservice.ReadXML;
import com.gps.center.baseclass.ParseInterface;
import com.gps.center.baseclass.MsgObj;
public class DbServer //implements ParseInterface
{
String name = null;
String password = null;
String driver = null;
String url = null;
StandardPoolDataSource dbpool;
ReadXML read = null;
Statement st = null;
PreparedStatement ps = null;
GregorianCalendar calendar; //日历
Pattern pattern = null;
public DbServer()
{
calendar = new GregorianCalendar();
read = new ReadXML();
read.readXML();//读取配置信息
this.name=read.name;
this.password=read.password;
this.driver=read.driver;
this.url=read.url;
init();//初始化连接池对象
}
private void init()
{
try
{
//创建数据库连接池连接对象
StandardConnectionPoolDataSource connect = new
StandardConnectionPoolDataSource();
connect.setDriverName(driver);
connect.setUrl(url);
connect.setUser(name);
connect.setPassword(password);
//用当前数据库连接对象创建数据库连接池
dbpool = new StandardPoolDataSource(connect);
dbpool.setMaxSize(10);
dbpool.setMinSize(5);
dbpool.setUser(name);
dbpool.setPassword(password);
}catch(Exception e)
{
e.printStackTrace();
System.exit(1);
}
}
//添加或更新车台信息表GPS信息
public void addVehicleInfo(String message)
{
Connection conn = null;
ResultSet set = null;
String id = "13579511357";
String sqlStr = null;
String mess[] = parseData(message);
for (int i = 0; i < 12; i++) {
System.out.println(mess[i]);
}
System.out.println(message+"DBSERVER");
try
{
//从连接池中获得数据库连接对象
conn = dbpool.getConnection();
conn.setAutoCommit(false);
st=conn.createStatement();
sqlStr = "Select * FROM VEHICLEINFO WHERE DIV_ID='"+mess[0].trim()+"'";
set=st.executeQuery(sqlStr);
if(set.next())//该车台已经存在
{
//调用函数更新该车台信息表
updateVehicleInfo("VEHICLEINFO",mess);
//向该车台明晰表中插入新的GPS信息
insertIntoTable("D_"+mess[0].trim(),mess);
}else//向车台信息表中插入新车台记录
{
sqlStr="CREATE TABLE D_"+mess[0].trim()+"(DIV_ID varchar(12),INCEPT_TIME DATE,"
+"LOCATION_SING varchar2(10) ,LATITUDE varchar2(10),SOUTH_NORTH varchar2(10),"
+"LONGITUDE varchar2(15),EAST_WEST varchar2(10),SPEED varchar2(10),"
+"DIRECTION varchar2(10),STATE varchar2(10),"
+"TEMPERATURE varchar2(10),MILEAGE varchar2(10),TRAVEL_TIME varchar2(10))";
st.executeUpdate(sqlStr);
conn.commit();
st.close();
//向车台信息表中插入新车台的信息
insertIntoTable("VEHICLEINFO",mess);
//向新车台明晰表中插入信息
insertIntoTable("D_"+mess[0].trim(),mess);
}
}catch(SQLException e)
{
e.printStackTrace();
System.exit(1);
}finally
{
try
{
set.close();
conn.close();
}catch(SQLException e2)
{
e2.printStackTrace();
System.exit(1);
}
}
}
// String DBString = reStr[2]+","+" "+","+reStr[4]+","+reStr[5]+","+reStr[6]+",
//"+reStr[7]+","+reStr[8]+","+reStr[10]+","+reStr[9]+","+stateStr+","+" "+","+" "+","+" ";
private String [] parseData(String message)
{
pattern = Pattern.compile("[,]");
String reStr []= pattern.split(message);
for(int i=0;i<reStr.length;i++)
{
if(reStr[i].trim()==null)
{
reStr[i]="";
}
}
return reStr ;
}
//添加设备回传的Gps信息
private void insertIntoTable(String tName,String mess[])
{
Connection conn=null;
String sql="INSERT INTO "+tName+"(DIV_ID,"
+"LOCATION_SING,LATITUDE,SOUTH_NORTH,"
+"LONGITUDE ,EAST_WEST,SPEED,"
+"DIRECTION ,STATE,"
+"TEMPERATURE ,MILEAGE,TRAVEL_TIME,INCEPT_TIME)"
+"VALUES(?,?,?,?,?,?,?,?,?,?,?,?,sysdate)";
try
{
conn=dbpool.getConnection();
conn.setAutoCommit(false);
ps=conn.prepareStatement(sql);
ps.setString(1,mess[0]);
ps.setString(2,mess[2]);
ps.setString(3,mess[3]);
ps.setString(4,mess[4]);
ps.setString(5,mess[5]);
ps.setString(6,mess[6]);
ps.setString(7,mess[7]);
ps.setString(8,mess[8]);
ps.setString(9,mess[9]);
ps.setString(10,mess[10]);
ps.setString(11,mess[11]);
ps.setString(12,mess[12]);
ps.executeQuery();
conn.commit();
}catch(SQLException e3)
{
e3.printStackTrace();
System.exit(1);
}finally
{
try
{
ps.close();
conn.close();
conn=null;
ps=null;
}catch(SQLException e4)
{
e4.printStackTrace();
System.exit(1);
}
}
}
//更新车台信息表中该车台的GPS信息
private void updateVehicleInfo(String tName,String mess[])
{
Connection updateConn=null;
PreparedStatement statement=null;
String updateSql="UPDATE "+tName;
updateSql = updateSql+" SET LOCATION_SING=?,LATITUDE=?,SOUTH_NORTH=?,"
+"LONGITUDE=? ,EAST_WEST=?,SPEED=?,"
+"DIRECTION=? ,STATE=?,"
+"TEMPERATURE=? ,MILEAGE=?,TRAVEL_TIME=?,INCEPT_TIME=sysdate";
updateSql = updateSql + " where DIV_ID='"+mess[0]+"'";
try
{
updateConn=dbpool.getConnection();
updateConn.setAutoCommit(false);//设置数据库连接自动更新为假
statement=updateConn.prepareStatement(updateSql);
statement.setString(1,mess[2]);
statement.setString(2,mess[3]);
statement.setString(3,mess[4]);
statement.setString(4,mess[5]);
statement.setString(5,mess[6]);
statement.setString(6,mess[7]);
statement.setString(7,mess[8]);
statement.setString(8,mess[9]);
statement.setString(9,mess[10]);
statement.setString(10,mess[11]);
statement.setString(11,mess[12]);
statement.executeUpdate();
updateConn.commit();
}catch(SQLException e5)
{
e5.printStackTrace();
System.exit(1);
}finally
{
try
{
statement.close();
updateConn.close();
}catch(SQLException e6)
{
e6.printStackTrace();
System.exit(1);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -