高手请帮一下 可是更新后再select还需要把更新语句中的表名提出来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 更新语句中的表名你可以放在一个变量里,在select的时候用。 什么意思?你是不是说你的sql是在文本框获取的,然后再处理?? 你可以先更新数据,在Select!在JB中你可以用JDBC实现更新,用Database,JdbTable,QueryDataSet实现刷新,我就是这样做的,很方便。 文本区输入查询语句?不太明白??JTextField吗?应该这样吧:String sSQL = JTextField1.getText(); 是用的JTextField.getText(),得到了我输入的SQL语句,但是使用更新的时候,在我输入的语句中的表名,不知道怎么获取了 对,我的SQL是在文本框里面获取的 不好意思,我们的adsl中午断掉了,所以没上来。表名你可以用substring取到。也就是说,先判断是update语句,然后把你的sql语句的第一个空格符和第二个空格符之间的字符串取出来,也就是表名了。然后再操作。 可是我使用String.indexOf(String str, int fromIndex) 和String.substring(int beginIndex, int endIndex) 却提取不出来其中的字符串 import java.awt.*;import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.util.*;//定义窗口类继承了JFramepublic 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就是你要的表名 to:hui3zhihui(慧慧)ResultsTableModel是什么,怎么找不到 to:: netwebs(Only Java)ResultsTableModel是结果以表格形式输出,得表格模型 关于类的实例变量的默认参数和构造函数的疑问 “下一步”对话框,JAVA有例子吗 Date.getTime的问题 Swing的替代品有哪些? 如何实现对文件边读边改? JTable怎样显示数据库的数据? java程序开机自动运行 想求一简单完整软件的源代码 ant问题 !!寻求杭州JAVA方面的工作,主要为了增加工作经验……薪水不看中 谁可以给我一个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是结果以表格形式输出,得表格模型