package sic;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Timestamp;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
public class dataModel extends AbstractTableModel{
static ResultSet res= null;
public dataModel(String s,int i)
{
//if(s==null){s=" ";};
String sql="";
DBConnected.connect();
if(i==1){ sql="select ID,USERNAME,PASSWORD, PRIV_ID, BIRTHDAY,GENDER,TELE_NUM ,USER_DESC from T_USER where username like '%"+s+"%'";
};
if(i==2){ sql="select * from "+s;};
//search.setgender();
System.out.println(sql);
res= DBConnected.getMsg(sql);
try {
ResultSetMetaData rsmd= res.getMetaData();
} catch (final SQLException e) {
// TODO 自動產生 catch 塊
e.printStackTrace();
}
}
public int getColumnCount() {
int count=0;
try {
final ResultSetMetaData rsmd= res.getMetaData();
count=rsmd.getColumnCount();
} catch (final SQLException e) {
// TODO 自動產生 catch 塊
e.printStackTrace();
}
//System.out.println("count =" + count);
return count;
}
public int getRowCount() {
int rows=0;
try {
res.last();
rows=res.getRow();
} catch (final SQLException e) {
// TODO 自動產生 catch 塊
e.printStackTrace();
}
//System.out.println("rows =" + rows);
return rows;
}
public Object getValueAt(final int rowIndex, final int columnIndex) {//顯示於表面res.getString(columnIndex +1).equals("1")
Object value=null;//共用value
try {
res.absolute(rowIndex + 1);
final ResultSetMetaData rsmd= res.getMetaData();
value= res.getObject(columnIndex +1);
//value= res.getObject(columnIndex +1);
if(rsmd.getColumnName(columnIndex+1).equals("GENDER")){//列名等於gender
// value=res.getObject(columnIndex+1);//獲得列的值
//if(value.equals(null)){value= res.getObject(columnIndex +1);}
//else
// if(res.getString(columnIndex +1).equals("")){
// value=res.getObject(columnIndex +1);
//
// }
// if(value!=null){
//
//
// if(res.getString(columnIndex +1).equals("1"))
// {
// value="男";
// }
// else if(res.getString(columnIndex +1).equals("2")){
//
// value="女";
// }
//
//
//
// }
//
if(value==null){value= res.getObject(columnIndex +1);}
else if(res.getString(columnIndex +1).equals("1")){
value="男";
}
else if(res.getString(columnIndex +1).equals("2")){
value="女";
}
}
if(rsmd.getColumnName(columnIndex+1).equals("PRIV_ID"))
{
if(value==null){value= res.getObject(columnIndex +1);}
else if(res.getString(columnIndex +1).equals("1")){
value="sys";
}
else if(res.getString(columnIndex +1).equals("2")){
value="system";
}
else if(res.getString(columnIndex +1).equals("3")){
value="manger";
}
else if(res.getString(columnIndex +1).equals("4")){
value="guest";
}
else{}
}
// if(rsmd.getColumnName(columnIndex+1).equals("BIRTHDAY")){
// //value= res.getObject(columnIndex+1).toString().substring(0, 10);
// }
if(value instanceof Timestamp){
value=res.getDate(columnIndex +1);
}//日期顯示
} catch (final SQLException e) {
// TODO 自動產生 catch 塊
e.printStackTrace();
}
return value;
}
public String getColumnName(final int column) {
String result = "";
try {
System.out.println("column=" + column);
final ResultSetMetaData rsmd= res.getMetaData();
result=rsmd.getColumnName(column+1);
} catch (final SQLException e) {
// TODO 帺?惗惉 catch ?
e.printStackTrace();
}
return result;
}
public boolean isCellEditable(final int rowIndex, final int columnIndex) {
return true;
}
public void setValueAt(Object aValue, final int rowIndex, final int columnIndex) {//寫進資料庫
try {
res.absolute(rowIndex +1);
ResultSetMetaData rsmd= res.getMetaData();
// if(rsmd.getColumnName(columnIndex+1).equals("birthday"))
// {
//
//
// aValue=aValue.toString();//+" 00:00:00.0";
//// yyyy-mm-dd hh:mm:ss.fffffffff
// //System.out.println(aValue);
//
// // value= res.getObject(columnIndex+1).toString().substring(0, 10);
//
// aValue=Date.valueOf((String) aValue);
//
//
// }
//
// if(aValue instanceof Timestamp){
//
// aValue=res.getDate(columnIndex +1);
//
//
// }
// if(rsmd.getColumnName(columnIndex+1).equals("birthday"))
// {
//
// aValue=Date.valueOf((String) aValue);
//
// }
//
//
// if(rsmd.getColumnName(columnIndex+1).equals("GENDER")){
//
//
if(aValue.equals("男")){aValue="1";
}
if(aValue.equals("女")){aValue="2";
}
// else{}錯誤 因為else的話就所有值都變了
//
//
// }
if(rsmd.getColumnName(columnIndex+1).equals("PRIV_ID")){
if(aValue.equals("SYS")){aValue="1";
}
else if(aValue.equals("SYSTEM")){aValue="2";
}
else if(aValue.equals("MANGER")){aValue="3";
}
else if(aValue.equals("GUEST")){aValue="4";
}
}
if(rsmd.getColumnName(columnIndex+1).equals("ID")){
}
if(rsmd.getColumnName(columnIndex+1).equals("BIRTHDAY"))
{
aValue=Date.valueOf((String) aValue);
}
res.updateObject(columnIndex + 1, aValue);
res.updateRow();
} catch (final SQLException e) {
// TODO 帺?惗惉 catch ?
e.printStackTrace();
}
}
public void deleteRows(final int selectRows[])
{
// for(int row=0;row<=selectRows.length-1;row++)
//
// {
// try {
//
// System.out.println("");
//
// res.absolute(selectRows[row]+1);
//
// System.out.println("");
// res.deleteRow();
//
// System.out.println(row+"2");
//
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
//
//
//
// }
//
//
//
//
//
//
//
// }
for (int row = selectRows.length - 1; row >= 0; row--) {//倒著刪就不會出現刪多次 少刪的情況 因為刪一個
//下面的會往上升 所以當同時刪多個的時候 刪三個的話 正著刪的時候for 刪第一個就會後兩個就會跟上來位置 導致刪除錯誤
//倒著刪的話 for 先刪第三個 只會未刪資料補上去 而一二無影響
// System.out.println("row=" + row);
try {
res.absolute(selectRows[row] + 1);
res.deleteRow();
} catch (final SQLException e) {
e.printStackTrace();
}
}
}
}