可是更新后再select还需要把更新语句中的表名提出来
解决方案 »
- el表达式的一个变量不清楚如何定义的
- 莫非添加删除有问题??? 望达人指教!
- applet里如何控制按钮的大小?
- 在JAVA里面如何调用ORCALE数据库里的存储过程(带输入输出参数)的????
- 在APPLET中读取的文件及APPLET的JAR文件,是不是只有在第一次访问的时候读,其它时间从IE的缓存里读?
- 多个tomcat启动问题 非端口占用
- 我想将在程序一运行时,就把焦点设置在一个JTextArea内,该用什么函数?
- 请教高手--html页面中的表格数据直接存为excel文件格式
- 有一困扰我多日的JTable问题想请教
- 关于扫雷。
- 谁可以给我一个java的例子读excel的*.cvs文件,thanks
- 谁有Together for Jbuilder 6.0的license??
你是不是说你的sql是在文本框获取的,然后再处理??
在JB中你可以用JDBC实现更新,用Database,JdbTable,QueryDataSet实现刷新,我就是这样做的,很方便。
JTextField吗?
应该这样吧:String sSQL = JTextField1.getText();
表名你可以用substring取到。
也就是说,先判断是update语句,然后把你的sql语句的第一个空格符和第二个空格符之间的
字符串取出来,也就是表名了。
然后再操作。
和String.substring(int beginIndex, int endIndex)
却提取不出来其中的字符串
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import java.util.*;//定义窗口类继承了JFrame
public class GUISQL extends JFrame{
//添加查询字符
JLabel label1=new JLabel();
//定义文本区用来输入SQL命令语句
JTextField sqlCommandText = new JTextField("请输入你的SQL命令语句",30);
//JTextArea
//定义一个确定按钮,当按钮按下时,执行你所输入的SQL命令语句
JButton button = new JButton("确定");
//定义滚动面板对象,使用滚动面板
JScrollPane resultsPane;
//定义连接
Connection connection;
//定义语句
Statement statement;
//定义结果集表对象
ResultsTableModel model; public static void main(String[] args){
new GUISQL("sun.jdbc.odbc.JdbcOdbcDriver",
"jdbc:odbc:dataplay","", "");
}
//构造器,使用驱动程序,连接,用户名密码
public GUISQL(String driver, String url, String user , String password){
// 调用基本的构造器
super("演示");
// 窗口关闭监听器
addWindowListener(new WindowClose());
// 在顶部加入SQL语句输入监听器
sqlCommandText.addActionListener(queryEvent);
//button.setMnemonic(KeyEvent.VK_I);在按钮上加上快捷健
// 在按钮上加键盘事件和事件监听
button.addActionListener(queryEvent);
//定义顶层容器对象
Container cp=getContentPane();
//定义布局
FlowLayout layout=new FlowLayout();
//设置布局
cp.setLayout(layout);
//在顶层容器上加入显示查询提示
label1.setText("查询");
cp.add(label1);
//在顶层容器中加入用来输入SQL命令语句的文本区
cp.add(sqlCommandText);
// 把按钮加到容器上
cp.add(button);
try{
// 加载驱动程序
Class.forName(driver);
//建立数据库连接
connection = DriverManager.getConnection(url, user, password);
//创建连接语句
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE);
//建立结果集表格对象
model = new ResultsTableModel();
//使用结果界表格对象建立表格
JTable table = new JTable(model);
// 在标各种使用自动调用滚动栏
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//使用结果集对象建立结果集面板
resultsPane = new JScrollPane(table); //把结果集面板加入到顶层容器中
cp.add(resultsPane);
}catch(ClassNotFoundException cnfe){
System.err.println(cnfe);
// 驱动程序没有找到
}catch(SQLException sqle){
System.err.println(sqle);
// 数据库连接错误
}
//设置容器大小
setSize(500, 400);
//设置容器的位置
setLocation(200,200);
//显示容器
setVisible(true);
} //定义关闭窗口类
class WindowClose extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
//定义查询事件监听对象
ActionListener queryEvent=new ActionListener() {
//使用内部函数构造事件监听对象
public void actionPerformed(ActionEvent e){
try{
//接受输入的命令来构造结果集,并用其来设置结果集表对象
ResultSet r = statement.executeQuery(sqlCommandText.getText() );
//ResultSet r = statement.executeUpdate(sqlCommandText.getText() );
model.setResultSet(r);
}
catch(SQLException SQLe){
System.err.println(SQLe);
}
}
};
}
不会吧?
...//这里判断你的sql是否为update 语句
int FirstChar = yoursql.indexOf(" ");//取得你的sql中第一个空格的位置,可以加出错判断,这里我就不写了
String newsql = yoursql.substring(FirstChar+1);//得到以表名开头的新串
int SecondChar = newsql.indexOf(" ");//取得你的sql中第二个空格的位置,也是新串中第一个空格的位置,这里也可以加判断,看是否有空格在表名之前。
String tablename=newsql.substring(0,SecondChar);//tablename就是你要的表名
ResultsTableModel是什么,怎么找不到
ResultsTableModel是结果以表格形式输出,得表格模型