📄 jbauto.java
字号:
import java.sql.*;
import java.util.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JBAuto{
public static String transform(String type){
int length=type.length();
StringBuffer sb=new StringBuffer(type);
String st=sb.substring(0,1);
String si=sb.substring(1,length);
String sr=st.toUpperCase();
String tran=sr+si;
return tran;
}
public static String JDPrivate(String[] type,String[] name){
String Pri[]=new String[type.length];
String thePrivate=" ";
for(int i=1;i<type.length;i++){
if(type[i]=="String"){
Pri[i]="\n\tprivate "+type[i]+" "+name[i]+"=\"\""+";";
}
else{
Pri[i]="\n\tprivate "+type[i]+" "+name[i]+";";
}
thePrivate+=Pri[i];
}
String Priother="\n\n\tprivate Connection con;\n";
thePrivate+=Priother;
return thePrivate;
}
public static String JDConnect(String drv,String url,String user,String password){
String theConnect="\n\tpublic void setConnection()throws SQLException{\n"+
"\t\ttry{\n"+
"\t\t\tClass.forName(\""+drv+"\");\n"+
"\t\t}\n"+
"\t\tcatch(ClassNotFoundException ce){\n"+
"\t\t\tSystem.out.println(\"SQLException:\"+ce.getMessage());\n"+
"\t\t\treturn;\n"+
"\t\t}\n"+
"\t\tcon=DriverManager.getConnection(\""+url+"\",\""+user+"\",\""+password+"\");\n"+
"\t}\n\n";
return theConnect;
}
public static String JDGet(String tablename,String[] type,String[] name,String[] key){
String thekey = getTheKey.getKeyA(key);
String theGet="\n\tpublic ArrayList get"+transform(tablename)+"(){\n"+
"\t\tString select=\"Select * from "+tablename+" \"+\n"+
"\t\t\t\t\t\t\t\t\t\"Order by "+thekey+"\";\n"+
"\t\tArrayList tablList=new ArrayList();\n"+
"\t\ttry{\n"+
"\t\t\tPreparedStatement prepStmt=con.prepareStatement(select);\n"+
"\t\t\tResultSet rs=prepStmt.executeQuery();\n"+"\t\t\t"+transform(tablename)+
" t=null;\n"+
"\t\t\twhile(rs.next()){\n"+
"\t\t\t\tt=new "+transform(tablename)+"();\n";
String[] Gettype=new String[type.length];
for(int i=1;i<type.length;i++){
Gettype[i]="\t\t\t\tt."+name[i]+"="+"rs.get"+transform(type[i])+"("+i+");\n";
theGet+=Gettype[i];
}
theGet=theGet+"\t\t\t\tt.setConnection();\n"+
"\t\t\t\ttablList.add(t);\n"+
"\t\t\t}\n"+
"\t\t\tprepStmt.close();\n"+
"\t\t}catch (SQLException ex){\n"+
"\t\t\tSystem.out.println(\"SQLException:\"+ex.getMessage());\n"+
"\t\t}\n"+
"\t\treturn tablList;\n"+
"\t}\n";
return theGet;
}
public static String JDLoad(String tablename,String[] type,String[] name,String[] key,String[] keytype){
String thekeytype=getTheKey.getKeyType(key,keytype);
String thekey=getTheKey.getKeyA(key);
String thekey1=getTheKey.getKeyB(key);
String prepkey="";
for(int j=1;j<key.length;j++){
prepkey+="\t\t\tprepSt.set"+transform(keytype[j])+"("+j+","+key[j]+");\n";
}
String theLoad="\n\tpublic void load"+transform(tablename)+"("+thekeytype+") throws Exception{\n"+
"\t\tString select =\"select * from "+tablename+" \""+
"+\"where "+thekey1+
"\t\ttry{\n"+
"\t\t\tPreparedStatement prepSt = con.prepareStatement(select);\n"+prepkey+
"\t\t\tResultSet rs = prepSt.executeQuery();\n"+
"\t\t\tif(rs.next()){\n"+"\t\t\t\tthis.";
String[] getLoad=new String[type.length];
for(int i=1;i<type.length;i++){
if(i==1){
getLoad[i]=name[i]+"=rs.get"+transform(type[i])+"("+i+");\n";
}
else{
getLoad[i]="\t\t\t\t"+name[i]+"=rs.get"+transform(type[i])+"("+i+");\n";
}
theLoad+=getLoad[i];
}
theLoad=theLoad+
"\t\t\t\tprepSt.close();\n"+
"\t\t\t}else{\n"+
"\t\t\t\tprepSt.close();\n"+
"\t\t\t\tthrow new Exception("+thekey+"+\" 已被删除或修改编号。\");\n"+
"\t\t\t}\n"+
"\t\t}catch(SQLException ex){\n"+
"\t\t\tSystem.out.println(\"SQLException:\"+ex.getMessage());\n"+
"\t\t}\n"+
"\t}\n";
return theLoad;
}
public static String JDInsert(String tablename,String[] type,String[] name,String[] key){
String[] setst=new String[type.length];
String sets="";
for(int i=1;i<type.length;i++){
if(i!=type.length-1){
setst[i]="?,";
}
else{
setst[i]="?";
}
sets+=setst[i];
}
String theInsert="\n\n\tpublic void insert"+transform(tablename)+"() throws Exception{\n"+
"\t\tString insert = \"insert into "+tablename+" values("+sets+")\";\n"+
"\t\ttry{\n"+
"\t\t\tPreparedStatement prepSt = con.prepareStatement(insert);\n";
String[] setInsert=new String[type.length];
for(int i=1;i<type.length;i++){
setInsert[i]="\t\t\tprepSt.set"+transform(type[i])+"("+i+","+name[i]+");\n";
theInsert+=setInsert[i];
}
String thekey=getTheKey.getKeyA(key);
theInsert=theInsert+"\t\t\tprepSt.executeUpdate();\n"+
"\t\t}catch (SQLException ex){\n"+
"\t\t\tthrow new Exception("+thekey+"+\" 不存在。\");\n"+
"\t\t}\n"+
"\t}\n";
return theInsert;
}
public static String JDGetSet(String[] type,String[] name){
String[] theGet=new String[type.length];
String[] theSet=new String[type.length];
String theGetSet=" ";
for(int i=1;i<type.length;i++){
theGet[i]="\n\tpublic "+type[i]+" get"+transform(name[i])+"(){\n"+
"\t\treturn "+name[i]+";\n\t}\n";
theGetSet+=theGet[i];
theSet[i]="\n\tpublic void set"+transform(name[i])+"("+type[i]+" "+name[i]+"){\n"
+ "\t\tthis."+name[i]+"="+name[i]+";\n\t}\n";
theGetSet+=theSet[i];
}
return theGetSet;
}
public static String JDUpdate(String tablename,String[] type,String[] name,String[] key){
String theUpdate="\n\tpublic void update"+transform(tablename)+"()throws Exception{\n"+
"\t\tString update=\"update "+tablename+" set ";
String[] theName=new String[name.length];
for(int i=key.length;i<name.length;i++){
if(i!=name.length-1){
theName[i]=name[i]+"=?,";
}
else{
theName[i]=name[i]+"=?";
}
theUpdate+=theName[i];
}
String thekey= getTheKey.getKeyB(key);
String thekey1=getTheKey.getKeyA(key);
String thekey2=getTheKey.getKeyC(key);
theUpdate=theUpdate+" where "+thekey+
"\t\ttry{\n"+
"\t\t\tPreparedStatement prepSt = con.prepareStatement(update);\n";
String[] theSet=new String[name.length];
for(int i=1;i<name.length;i++){
for(int j=1;j<key.length;j++){
if(name[i].equals(key[j])==true){
int num1=name.length-key.length+i;
theSet[i]="\t\t\tprepSt.set"+transform(type[i])+"("+num1+","+name[i]+");\n";
}
else{
int num2=i-key.length+1;
theSet[i]="\t\t\tprepSt.set"+transform(type[i])+"("+num2+","+name[i]+");\n";
}
}
theUpdate+=theSet[i];
}
theUpdate=theUpdate+
"\t\t\tprepSt.executeUpdate();\n"+
"\t\t\tprepSt.close();\n"+
"\t\t}catch (SQLException ex){\n"+
"\t\t\tSystem.out.println(\"SQLException:\"+ex.getMessage());\n"+
"\t\t\tthrow new Exception(\"Update Fail:\"+"+thekey1+");\n"+
"\t\t}\n"+
"\t}\n";
return theUpdate;
}
public static String JDDelete(String tablename,String[] type,String[] name,String[] key){
String thekey=getTheKey.getKeyB(key);
String thekey1=getTheKey.getKeyA(key);
String theDelete="\n\tpublic int delete"+transform(tablename)+"() throws Exception{\n"+
"\t\tString delete=\"delete from "+tablename+" where "+thekey+
"\t\ttry{\n"+
"\t\t\tPreparedStatement prepSt = con.prepareStatement(delete);\n";
for(int i=1;i<key.length;i++){
String s="\t\t\tprepSt.set"+transform(type[i])+"("+i+","+name[i]+");\n";
theDelete+=s;
}
theDelete=theDelete+
"\t\t\tprepSt.executeUpdate();\n"+
"\t\t\tprepSt.close();\n"+
"\t\t\treturn 1;\n"+
"\t\t}catch (SQLException ex){\n"+
"\t\t\tSystem.out.println(\"SQLException:\"+ex.getMessage());\n"+
"\t\t\tthrow new Exception(\"Delete Fail:\"+"+thekey1+");\n"+
"\t\t}\n"+
"\t}\n";
return theDelete;
}
public static void main(String args[]){
try{
JBAuto jd = new JBAuto();
ConnectionDialog cd = new ConnectionDialog(new JFrame());
Connection con = cd.getConnection();
String tablename = cd.getTablename();
//~~~~~~获取数据库结果集数据列的列名和列类型~~~~~~//
DBInfo di = new DBInfo();
String[] ColumnName = di.getColname(con,tablename);
String[] ColumnType = di.getColtype(con,tablename);
//~~~~~~实现SQL数据类型到Java数据类型的转换~~~~~~//
ChangeType ct = new ChangeType();
ColumnType = ct.changeSQLType(ColumnType);
//~~~~~~~~获取数据表SQL命令中指定的主键字~~~~~~~~~//
DBKeyInfo dk = new DBKeyInfo();
String[] Key = dk.getPrimaryKey(con,tablename);
String[] KeyType = dk.getKeyType(ColumnName,ColumnType,Key);
//~~~~~~~~产生实体JavaBean框架的源代码并输出~~~~~~~//
String s="\nimport java.sql.*;\n"+
"import java.util.*;\n"+
"import java.sql.Date;\n"+
"\npublic class "+transform(tablename)+"{\n";
String thePrivate=JDPrivate(ColumnType,ColumnName);
String theConnect=JDConnect(cd.getDrv(),cd.getUrl(),cd.getUser(),cd.getPassword());
String theGet=JDGet(tablename,ColumnType,ColumnName,Key);
String theLoad=JDLoad(tablename,ColumnType,ColumnName,Key,KeyType);
String theInsert=JDInsert(tablename,ColumnType,ColumnName,Key);
String theGetSet=JDGetSet(ColumnType,ColumnName);
String theUpdate=JDUpdate(tablename,ColumnType,ColumnName,Key);
String theDelete=JDDelete(tablename,ColumnType,ColumnName,Key);
String JBText=s+thePrivate+theConnect+theGet+theLoad+theInsert+theGetSet+theUpdate+theDelete+"\n}";
//-----产生Tablename.java文件并输出-----//
String JBname=transform(tablename)+".java";
FileWriter fov=new FileWriter(JBname);
fov.write(JBText);
fov.close();
//~~~~~~~~~~~~~~~~~~~Success Info~~~~~~~~~~~~~~~~~~~~~//
GetText frame=new GetText(JBname);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
JOptionPane.showMessageDialog(null,
"成功生成"+transform(tablename)+"的JavaBean构件!",
"Infomation",
JOptionPane.WARNING_MESSAGE);
//System.exit(0);*/
}
catch(SQLException e){
JOptionPane.showMessageDialog(null,
e.getMessage(),
"SQLException",
JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
catch(IOException e1){
JOptionPane.showMessageDialog(null,
e1.getMessage(),
"IOException",
JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
catch (Exception ex){
JOptionPane.showMessageDialog(null,
ex.getMessage(),
"Exception",
JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -