每次生産有問題,看日志拿到sql,如果參數太多,把參數拼接到sql中費很長時間,于是寫了一個小工具!
-----------------來自小馬哥的故事
直接上代碼
package com.mantis.hc.sale.service.pay.util;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.*;
public class sqlTools extends JFrame implements ActionListener {
private JPanel jp=new JPanel();
private JLabel[] jlArray={new JLabel("SQL"),
new JLabel("字段值"),new JLabel("結果"),new JLabel("") };
private JButton[] jbArray={new JButton("執行"),
new JButton("清空")};
private JTextField jtxtSql =new JTextField();
private JTextField JTextValue= new JTextField();
private JTextArea resultSQL= new JTextArea();
public sqlTools(){
jp.setLayout(null);
for(int i=0;i<2;i++){
jlArray[i].setBounds(30, 20+i*50, 80, 26);
jbArray[i].setBounds(120+i*110, 660, 80,26);
jp.add(jlArray[i]);
jp.add(jbArray[i]);
jbArray[i].addActionListener(this);
}
for(int i=2;i<3;i++){
jlArray[i].setBounds(30, 20+i*50, 80, 26);
jp.add(jlArray[i]);
}
jtxtSql.setBounds(80,20,500,30);
jp.add(jtxtSql);
jtxtSql.addActionListener(this);
JTextValue.setBounds(80,70,500,30);
jp.add(JTextValue);
JTextValue.addActionListener(this);
resultSQL.setBounds(80,120,500,500);
resultSQL.setLineWrap(true);
jp.add(resultSQL);
jlArray[3].setBounds(10, 250, 700, 30);
jp.add(jlArray[3]);
this.add(jp);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("小馬哥工具");
this.setResizable(false);
this.setBounds(100, 230, 700, 800);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(jtxtSql.getText().equals("")&&String.valueOf(JTextValue.getText()).equals("")){
resultSQL.setText("參數不能為空!,請重新參數!");
}else{
try{
String resultStr = getResultSQL(jtxtSql.getText(),JTextValue.getText());
resultSQL.setText(resultStr);
}catch (Exception a){
System.out.println(a.getMessage());
resultSQL.setText("參數錯誤,請檢查參數!");
}
}
}
//主函數入口
public static void main(String[] args) {
new sqlTools();
}
public static String getResultSQL(String text,String str) {
Pattern pattern = Pattern.compile("\\?");
StringBuffer buffer = new StringBuffer();
//參數轉換成數組
String[] words = ClearBracket(str).split(",");
for (int i = 0; i < words.length; i++) {
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
//?号 替換成資料中對應的資料
matcher.appendReplacement(buffer, "'"+words[i++].trim()+"'");
}
matcher.appendTail(buffer);
}
return buffer.toString();
}
//删除括号及括号中的資料
private static String ClearBracket(String context) {
String pattern = "\\([^)]*\\)";
context = context.replaceAll(pattern, "");
return context;
}
}
複制
生成class 檔案
javac ResSql.java
複制
打包成jar
jar cvf sqlTools.jar ResSql.class
複制
修改 MANIFEST.MF 檔案
Manifest-Version: 1.0
Created-By: 1.8.0_131 (Oracle Corporation)
Main-Class: ResSql
複制
打包壓縮 ZIP 修改字尾 JAR
編寫Bat檔案
@echo off
SET javaw="%JAVA_HOME%\bin\javaw"
start javaw -jar "sqlTools.jar"
exit
複制
本文由 小馬哥 創作,采用 知識共享署名4.0 國際許可協定進行許可
本站文章除注明轉載/出處外,均為本站原創或翻譯,轉載前請務必署名