📄 tcutabledatapkg.java
字号:
package com.jr81.source.dataset;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.jdom.Element;
import com.jr81.source.common.JrUtility;
import com.jr81.source.common.TcuDataType;
import com.jr81.source.stream.TcuBaseClassSTR;
import com.jr81.source.stream.TcuBaseItemsSTR;
public class TcuTableDataPkg extends TcuBaseClassSTR {
private String Name= "";
private Integer InsertCount=Integer.valueOf(0);
private TcuTableInfo TableInfo=new TcuTableInfo();
private TcuDataRecordList DataRecordList =new TcuDataRecordList();
public TcuTableDataPkg() {
super("TDP");
// TODO 自动生成构造函数存根
}
public boolean Clear() {
// TODO 自动生成方法存根
Name = "";
InsertCount=Integer.valueOf(0);
TableInfo.Clear();
DataRecordList.Clear();
return true;
}
public boolean CreateStrItems() throws Exception {
// TODO 自动生成方法存根
StrItems.Clear();
StrItems.AddItem("Name", getName());
StrItems.AddItem("IC", getInsertCount());
StrItems.AddItem("TI",TableInfo.SaveToByteArray(),0);
StrItems.AddItem("DRL",DataRecordList.SaveToByteArray(),0);
return true;
}
public boolean ParseStrItems() throws Exception {
// TODO 自动生成方法存根
setName(StrItems.GetItem("Name"));
setInsertCount(StrItems.GetItemToInteger("IC"));
TableInfo.LoadFromByteArray(StrItems.GetItemByteArray("TI"));
DataRecordList.LoadFromByteArray(StrItems.GetItemByteArray("DRL"));
return true;
}
public String SaveToXML(){
return GetXMLItem("TableDataPkg",GetXMLItems());
}
public String GetXMLItems(){
//String xml=GetXMLItem("TableName",Name);
//xml+=DataRecordList.SaveToXML();
return DataRecordList.GetXMLItems();
}
public boolean ParseXMLItems(Element xml){
//Name=xml.getChildText("TableName");
return DataRecordList.ParseXMLItems(xml);
}
public boolean LoadFromXML(Element root){
Element xml=root.getChild("TableDataPkg");
return ParseXMLItems(xml);
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
TcuTableDataPkg tbpkg=new TcuTableDataPkg();
try {
List list=new ArrayList();
list.add("1");
list.add("2");
System.out.println(tbpkg.SaveToXML());
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
/**
* @return 返回 dataRecordList。
*/
public TcuDataRecordList getDataRecordList() {
return DataRecordList;
}
/**
* @param dataRecordList 要设置的 dataRecordList。
*/
public void setDataRecordList(TcuDataRecordList dataRecordList) {
DataRecordList = dataRecordList;
}
/**
* @return 返回 tableInfo。
*/
public TcuTableInfo getTableInfo() {
return TableInfo;
}
/**
* @param tableInfo 要设置的 tableInfo。
*/
public void setTableInfo(TcuTableInfo tableInfo) {
TableInfo = tableInfo;
}
public boolean fromResultSet(ResultSet rs){
return fromResultSet(rs,null,null,false);
}
public boolean fromResultSet(ResultSet rs , boolean IsJavaTypeToDelphi) {
return fromResultSet(rs,null,null,IsJavaTypeToDelphi);
}
public boolean fromResultSet(ResultSet rs,Connection con,String table_name){
return fromResultSet(rs,con,table_name,false);
}
public boolean fromResultSet(ResultSet rs,Connection con,String table_name,boolean IsJavaTypeToDelphi){
try {
Clear();
PrintDebugMsg(table_name);
//DataRecordList.Clear();
//TableInfo.setTableName()
ResultSetMetaData ms= rs.getMetaData();
TcuFieldInfoList fil=TableInfo.getFieldInfoList();
fil.Clear();
for (int i=1;i<=ms.getColumnCount();i++){
TcuFieldInfo fi=new TcuFieldInfo();
fi.setFieldID(Integer.valueOf(i));
fi.setFieldName(ms.getColumnName(i));
fi.setDispName(ms.getColumnLabel(i));
fi.setLength(Integer.valueOf(ms.getColumnDisplaySize(i)));
//fi.setDataType(ms.getColumnType(i));
if (IsJavaTypeToDelphi == false) {
fi.setDataType(Integer.valueOf(ms.getColumnType(i)));
} else {
fi.setDataType(Integer.valueOf(JrUtility.JavaTypeToDataType(ms.getColumnType(i))));
}
fi.setReadOnly(ms.isReadOnly(i));
fi.setNull(ms.isNullable(i)==1);
fi.setAutoInc(ms.isAutoIncrement(i));
//ms.isSearchable()
fi.setKey(false);
//fi.setDefaultValue(ms.)
//ms.get
fil.AddItem(fi);
}
PrintDebugMsg("Begin get primarykeys");
if (con!=null){
PrintDebugMsg("Geting primarykeys");
DatabaseMetaData dbMeta = con.getMetaData();
ResultSet pkRSet = dbMeta.getPrimaryKeys(null, null, table_name);
while( pkRSet.next() ) {
PrintDebugMsg("****** Comment ******");
PrintDebugMsg("TABLE_CAT : "+pkRSet.getObject(1));
PrintDebugMsg("TABLE_SCHEM: "+pkRSet.getObject(2));
PrintDebugMsg("TABLE_NAME : "+pkRSet.getObject(3));
PrintDebugMsg("COLUMN_NAME: "+pkRSet.getObject(4));
PrintDebugMsg("KEY_SEQ : "+pkRSet.getObject(5));
PrintDebugMsg("PK_NAME : "+pkRSet.getObject(6));
PrintDebugMsg("****** ******* ******");
TcuFieldInfo Item=fil.ItemByName((String)pkRSet.getObject(4));
if (Item!=null){
Item.setKey(true);
}
}
PrintDebugMsg("End get primarykeys");
}
TableInfo.setTableName(ms.getTableName(1));
/*if (rs.next()){
rs.last();
int count=rs.getRow();
rs.first();*/
TcuBaseItemsSTR stritems=new TcuBaseItemsSTR();
TcuBaseItemsSTR stritems2=new TcuBaseItemsSTR();
int DataType=TcuDataType.String;
int i=0;
while (rs.next()){
TcuDataRecord dr=new TcuDataRecord(stritems);
for (int j=1;j<=ms.getColumnCount();j++){
TcuFieldValue fv=new TcuFieldValue(stritems2);
fv.setFieldName(ms.getColumnName(j));
DataType=JrUtility.JavaTypeToDataType(ms.getColumnType(j));
fv.setDataType(DataType);
switch (DataType){
case TcuDataType.String:{
try {
String tmp=rs.getString(j);
if (tmp==null){
fv.setFieldValue("");
}else{
fv.setFieldValue(tmp.trim());
}
} catch (RuntimeException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
fv.setFieldValue("");
}
break;
}
case TcuDataType.Text:{
try {
Reader reader = rs.getCharacterStream(j);
if (reader == null) {
fv.setFieldValue("");
}else {
StringBuffer sb = new StringBuffer();
char[] charbuf = new char[4096];
for (int k =reader.read(charbuf); k>0;k=reader.read(charbuf)) {
sb.append(charbuf, 0, k);
}
//fv.setFieldValue(rs.getString(j));
fv.setFieldValue(sb.toString());
}
} catch (Exception e) {
fv.setFieldValue("");
}
break;
}
case TcuDataType.ByteArray:{
try {
byte[] tmp=rs.getBytes(j);
if (tmp==null){
fv.setFieldValue("");
}else{
fv.setFieldValue(tmp);
}
} catch (RuntimeException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
fv.setFieldValue("");
}
break;
}
default:{
try {
String tmp=rs.getString(j);
if (tmp==null){
fv.setFieldValue("");
}else{
fv.setFieldValue(tmp.trim());
}
} catch (RuntimeException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
fv.setFieldValue("");
}
break;
}
}
dr.AddItem(fv);
}
DataRecordList.AddItem(dr);
i++;
//rs.next();
}
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return false;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public Integer getInsertCount() {
return InsertCount;
}
public void setInsertCount(Integer insertCount) {
InsertCount = insertCount;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -