public static String back(final String carnum) throws SQLException {//获取该车牌所在车位位置信息
//加载数据库驱动
String a;
Connection conn = null;
conn = getConnection("whoere");
//使用DriverManager获取数据库连接
Statement stmt = conn.createStatement();
//使用Connection来创建一个Statment对象
ResultSet rs =stmt.executeQuery(
"select x,y from parking where carnum='"+carnum+"'");//从数据库中查询车牌对应的位置信息并返回
rs.first();
a=rs.getString(1);
rs.close();
return a;
//把查询结果输出来
whoere是数据库的名称,我怎么样以坐标形式能得到车牌对应的位置信息呢 因为我理解的是 a获取了当前记录的第1列数据 我希望最后出来的是一个坐标(数组),因为我后续是需要对这个坐标进行二次处理的 不知道怎么做
第一段代码是用于从resultset获取结果的,然后我用了自己封装的Result,类似一个TABLE的数据结构
后续使用直接用result.getString(rowIndex,columnIndex) 使用坐标获取数据,也可以使用result.getString(rowIndex,columnName)两种方式获取,第二段则是RESULT的源码。封装好了直接送你了
protected Result callBack(ResultSet resultSet, int index) throws SQLException {
if (resultSet == null) {
return new Result();
}
Long startTime = System.currentTimeMillis();
Result result = new Result();
for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
result.addColumnName(resultSet.getMetaData().getColumnName(i));
}
int count = 0;
Clob clob = null;
while (resultSet.next()) {
for (int i = 1; i <= result.getColumnCount(); i++) {
if (Types.CLOB == resultSet.getMetaData().getColumnType(i)) {
clob = resultSet.getClob(i);
if (clob != null) {
addValue(count, result, clob.getSubString(1L, (int) clob.length()));
}
} else if (Types.NUMERIC == resultSet.getMetaData().getColumnType(i)) {
//防止出现科学计数法
// String value = new BigDecimal(String.valueOf(resultSet.getDouble(i))).toString();
// if(value.indexOf(".")>=0){
// String[] array = value.split("[.]");
// if(array.length==2&&Long.parseLong(array[1])==0){
// value = String.valueOf(Long.parseLong(array[0]));
// }
// }
addValue(count, result, setNumber(resultSet.getDouble(i)));
} else {
addValue(count, result, resultSet.getString(i));
}
}
count++;
}
result.setAffectedRows(count);
result.isSuccessed(true);
LogHelper.getLogger().debug(BaseHandler.class.getSimpleName(), LogHelper.DEBUG, "[" + index + "]封装数据耗时:" + (System.currentTimeMillis() - startTime) + "ms 共[" + count + "]行");
return result;
}
private void addValue(int count, Result result, String content) {
if (nullToEmpty) {//是否把null值转换为空
result.addValue(count, content == null ? "" : content);
} else {
result.addValue(count, content);
}
}
public class DataType {
public final static int STRING = 1;
public final static int INT = 2;
public final static int LONG = 3;
public final static int BOOLEAN = 4;
public final static int DOUBLE = 5;
public final static int DATE = 6;
public final static int CLOB = 10;
/**byte写入blob*/
public final static int BYTE = 20;
}
public class Table extends DataType implements Serializable{
private boolean nullStringToEmpty = false;
public void nullStringToEmpty(boolean flag){
nullStringToEmpty = flag;
}
/**行*/
private List<Row> rows = new ArrayList<Row>();
/**列名称*/
private List<String> columnNames = new ArrayList<String>();
/**列类型*/
private List<Integer> columnTypes = new ArrayList<Integer>();
/**
* 添加列的名称 默认为String类型
* @param name
*/
public void addColumnName(String name){
columnNames.add(name);
columnTypes.add(STRING);
}
/**
* 设置某一列的数据类型
* @param column
* @param type
*/
public void setColumnType(int column,int type){
columnTypes.set(column, type);
}
/**
* 根据索引获取列的名称
* @param index
* @return
*/
public String getColumnName(int index){
if(index>=getColumnCount())return null;
return columnNames.get(index);
}
/**
* 获取列的长度
* @return
*/
public int getColumnCount(){
return columnNames.size();
}
/**
* 根据名称获取列的索引
* @param name
* @return
*/
public int getColumnIndex(String name){
for(int i=0;i<columnNames.size();i++){
if(columnNames.get(i).equals(name))return i;
}
return -1;
}
/**
* 获取列的类型
* @param index
* @return
*/
public int getColumnType(int index){
return columnTypes.get(index);
}
/**
* 获取某一行
* @param index
* @return
*/
public Row getRow(int index){
return rows.get(index);
}
public Object getObject(int rowIndex,int columnIndex){
if(rowIndex<0||columnIndex<0)return null;
return rows.get(rowIndex).getValue(columnIndex);
}
public Object getObject(int rowIndex,String columnName){
int columnIndex = -1;
for(int i=0;i<columnNames.size();i++){
if(columnNames.get(i).equals(columnName)){
columnIndex = i;
}
}
return getObject(rowIndex, columnIndex);
}
public String getString(int rowIndex,int columnIndex){
Object value = getObject(rowIndex, columnIndex);
if(value==null){
if(nullStringToEmpty)return "";
return null;
}
return value.toString();
}
public String getString(int rowIndex,String columnName){
int columnIndex = -1;
for(int i=0;i<columnNames.size();i++){
if(columnNames.get(i).equals(columnName)){
columnIndex = i;
}
}
return getString(rowIndex, columnIndex);
}
public double getDouble(int rowIndex,int columnIndex){
String value = getString(rowIndex, columnIndex);
return Double.parseDouble(value);
}
/**
* 获取double数值,如果为null则返回0.0
* @param rowIndex
* @param columnName
* @return
*/
public double getDouble(int rowIndex,String columnName){
int columnIndex = -1;
for(int i=0;i<columnNames.size();i++){
if(columnNames.get(i).equals(columnName)){
columnIndex = i;
}
}
String value = getString(rowIndex, columnIndex);
if(value==null||value.trim().length()==0)return 0.0d;
return Double.parseDouble(value);
}
/**
* 获取整形数值,如果为null则返回0
* @param rowIndex
* @param columnName
* @return
*/
public int getInt(int rowIndex,String columnName){
int columnIndex = -1;
for(int i=0;i<columnNames.size();i++){
if(columnNames.get(i).equals(columnName)){
columnIndex = i;
}
}
String value = getString(rowIndex, columnIndex);
if(value==null||value.trim().length()==0)return 0;
return Integer.parseInt(value);
}
public int getInt(int rowIndex,int columnIndex){
String value = getString(rowIndex, columnIndex);
return Integer.parseInt(value);
}
public long getLong(int rowIndex,String columnName){
int columnIndex = -1;
for(int i=0;i<columnNames.size();i++){
if(columnNames.get(i).equals(columnName)){
columnIndex = i;
}
}
String value = getString(rowIndex, columnIndex);
if(value==null||value.trim().length()==0)return 0;
return Long.parseLong(value);
}
public long getLong(int rowIndex,int columnIndex){
String value = getString(rowIndex, columnIndex);
return Long.parseLong(value);
}
public Boolean getBoolean(int rowIndex,int columnIndex){
String value = getString(rowIndex, columnIndex);
if((value != null) && value.equalsIgnoreCase("true")){
return true;
}
if((value != null) && value.equalsIgnoreCase("Y")){
return true;
}
return false;
}
public Boolean getBoolean(int rowIndex,String columnName){
String value = getString(rowIndex, columnName);
if((value != null) && value.equalsIgnoreCase("true")){
return true;
}
if((value != null) && value.equalsIgnoreCase("Y")){
return true;
}
return false;
}
/**
* 获取行的长度
* @return
*/
public int getRowCount(){
return rows.size();
}
//========================================添加值==========================================================
/**
* 为某一行添加数据,如果行索引大于现有行,则新增一行,并将该值作为该行的第一列的值。反之对该行新增一列。
* @param rowIndex
* @param data
*/
public void addValue(int rowIndex,String data){
setRow(rowIndex).addColumnValue(data);
}
public void addValue(int rowIndex,int data){
setRow(rowIndex).addColumnValue(data);
}
public void addValue(int rowIndex,long data){
setRow(rowIndex).addColumnValue(data);
}
public void addValue(int rowIndex,double data){
setRow(rowIndex).addColumnValue(data);
}
public void addValue(int rowIndex,Object data){
setRow(rowIndex).addColumnValue(data);
}
/**
* 替换某一个行某一列的值
* 如果行索引大于现有行,则新增加一行,并将值作为该行的第一列
* 如何行索引小于现有行,则获取该行,并处理列。列索引大于此行现有的列,则新增列,反之则将该行的该列替换为现有值
* @param rowIndex 行索引
* @param columnIndex 列索引
* @param data
*/
public void setValue(int rowIndex,int columnIndex,Object data,int type){
setRow(rowIndex).setColumnValue(columnIndex, data,type);
}
public void setValue(int rowIndex,int columnIndex,String data){
this.setValue(rowIndex, columnIndex, data, STRING);
}
/**
* 根据索引来获取行,如果索引大于现有的行数,则添加新行,否则返回索引指定行
* @param index
* @return
*/
private Row setRow(int index){
Row row = null;
if(index>=rows.size()){
row = new Row();
rows.add(row);
}else{
row = rows.get(index);;
}
return row;
}
public class Row implements Serializable{
private List<Object> rowColValues = new ArrayList<Object>();
/**
* 添加数据
* @param parameter
*/
private void addColumnValue(Object parameter){
rowColValues.add(parameter);
//每次添加的时候验证列表的总列数和每一行的总列,因为用户可能会忘记设置列,从而导致出错。所以设置默认值
if(columnNames.size()<rowColValues.size()){
columnNames.add(String.valueOf(rowColValues.size()));
columnTypes.add(STRING);
}
}
/**
* 将指定的索引的数据进行替换,如果索引大于现有的数据,则添加新的数据
* @param index
* @param parameter
* @param type 参数的数据类型
*/
private void setColumnValue(int index,Object parameter,int type){
if(index<rowColValues.size()){
rowColValues.set(index, parameter);
}else{
addColumnValue(parameter);
}
}
private Object getValue(int index){
if(index>=rowColValues.size())return null;
return rowColValues.get(index);
}
private int size(){
return rowColValues.size();
}
}
public String toString(){
StringBuilder sb = new StringBuilder();
for(int i=0;i<getColumnCount();i++){
sb.append(getColumnName(i)).append("\t");
}
sb.append("\n");
for(int i=0;i<getRowCount();i++){
for(int j=0;j<getColumnCount();j++){
sb.append(getString(i, j)).append("\t");
}
sb.append("\n");
}
return sb.toString();
}
}
public class Result extends Table{
public class Attributes{
public Attributes(){
}
public Attributes(Map<String,String> attr){
attribute.putAll(attr);
}
public String getString(String key){
return attribute.get(key);
}
public void put(String key,String value){
attribute.put(key, value);
}
public void putAll(Map<String,String> attr){
attribute.putAll(attr);
}
public int getInt(String key){
return attribute.get(key)==null?null:Integer.parseInt(attribute.get(key));
}
Map<String,String> attribute = new HashMap<String,String>();
}
private Map<String,Attributes> attributes = new HashMap<String,Attributes>();
private Map<String,String> resultAttribute = new HashMap<String,String>();
/**
* 用于设置整个结果的属性
* @param name
* @param value
*/
public void setAttribute(String name,String value){
resultAttribute.put(name, value);
}
public String getAttribute(String name){
return resultAttribute.get(name);
}
/**
* 用于设置某个单元格的属性
* @param rowIndex
* @param columnIndex
* @param attr
*/
public void addAttribute(int rowIndex,int columnIndex,Map<String,String> attr){
attributes.put(String.valueOf(rowIndex)+String.valueOf(columnIndex), new Attributes(attr));
}
/**
* 用于设置某个单元格的属性
* @param rowIndex
* @param columnIndex
* @param attr
*/
public void addAttribute(int rowIndex,int columnIndex,Attributes attr){
attributes.put(String.valueOf(rowIndex)+String.valueOf(columnIndex), attr);
}
/**
* 用于设置某个单元格的属性
* @param rowIndex
* @param columnIndex
* @param attrName
* @param attrValue
*/
public void addAttribute(int rowIndex,int columnIndex,String attrName,String attrValue){
Attributes attribue = getAttributes(rowIndex, columnIndex);
if(attribue==null){
attribue = new Attributes();
attribue.put(attrName, attrValue);
addAttribute(rowIndex, columnIndex, attribue);
return;
}
attribue.put(attrName, attrValue);
}
public Attributes getAttributes(int rowIndex,int columnIndex){
return attributes.get(String.valueOf(rowIndex)+String.valueOf(columnIndex));
}
public String getAttribute(int rowIndex,int columnIndex,String key){
return getAttributes(rowIndex, columnIndex)==null?null:getAttributes(rowIndex, columnIndex).getString(key);
}
private String messgage;
public void setMessage(String messgage){
this.messgage = messgage;
}
public String getMessage(){
return messgage;
}
private int affectedRows = 0;
public int getAffectedRows(){
return affectedRows;
}
public void setAffectedRows(int n){
affectedRows = n;
}
private boolean isSuccessed = false;
public void isSuccessed(boolean b){
this.isSuccessed = b;
}
public boolean isSuccessed(){
return isSuccessed;
}
public String[] getColumnNames(){
String[] columns = new String[getColumnCount()];
for(int i=0;i<getColumnCount();i++){
columns[i] = getColumnName(i);
}
return columns;
}
public Object[] getArrRow(int index){
if(index>=getRowCount())return null;
Object[] array = new Object[getColumnCount()];
int type = DataType.STRING;
for(int i=0;i<getColumnCount();i++){
type = getColumnType(i);
if(type==DataType.BOOLEAN){
array[i] = getBoolean(index, i);
}else {
array[i] = getObject(index, i);
}
}
return array;
}
public String[] getStringArrRow(int index){
if(index>=getRowCount())return null;
String[] array = new String[getColumnCount()];
for(int i=0;i<getColumnCount();i++){
array[i] = this.getString(index, i);
}
return array;
}
public Map<String,String> getMapRow(int index){
if(index>=getRowCount())return null;
Map<String,String> map = new HashMap<String,String>();
for(int i=0;i<getColumnCount();i++){
map.put(getColumnName(i), getString(index, i));
}
return map;
}
// public String toString(){
// StringBuilder sb = new StringBuilder();
// return sb.toString();
// }
}