可是更新后再select还需要把更新语句中的表名提出来

解决方案 »

  1.   

    更新语句中的表名你可以放在一个变量里,在select的时候用。
      

  2.   

    什么意思?
    你是不是说你的sql是在文本框获取的,然后再处理??
      

  3.   

    你可以先更新数据,在Select!
    在JB中你可以用JDBC实现更新,用Database,JdbTable,QueryDataSet实现刷新,我就是这样做的,很方便。
      

  4.   

    文本区输入查询语句?不太明白??
    JTextField吗?
    应该这样吧:String sSQL = JTextField1.getText();
      

  5.   

    是用的JTextField.getText(),得到了我输入的SQL语句,但是使用更新的时候,在我输入的语句中的表名,不知道怎么获取了
      

  6.   

    对,我的SQL是在文本框里面获取的
      

  7.   

    不好意思,我们的adsl中午断掉了,所以没上来。
    表名你可以用substring取到。
    也就是说,先判断是update语句,然后把你的sql语句的第一个空格符和第二个空格符之间的
    字符串取出来,也就是表名了。
    然后再操作。
      

  8.   

    可是我使用String.indexOf(String str, int fromIndex) 
    和String.substring(int beginIndex, int endIndex) 
    却提取不出来其中的字符串
      

  9.   

    import java.awt.*;
    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); 
             }
             }
            };
         
      
    }
      

  10.   

    取不到字符串??
    不会吧?
    ...//这里判断你的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就是你要的表名
      

  11.   

    to:hui3zhihui(慧慧)
    ResultsTableModel是什么,怎么找不到
      

  12.   

    to:: netwebs(Only Java)
    ResultsTableModel是结果以表格形式输出,得表格模型