Java设置准备好的语句

Java设置准备好的语句,java,class,structure,prepared-statement,Java,Class,Structure,Prepared Statement,这是一个与编码标准有关的问题 我遇到的问题是,我很难将我准备好的语句用作类/构造函数(我来自informix后台,顺便说一句,java对我来说还是新的) 通常,当我编写代码时,我喜欢尽可能地将脚本编写在主块之外,然后根据需要调用函数,就像我将要展示的示例中那样。我还用大量的前斜杠夸大了结构 public class Script { ///////////////////////////////////////////////////////////////// start main

这是一个与编码标准有关的问题

我遇到的问题是,我很难将我准备好的语句用作类/构造函数(我来自informix后台,顺便说一句,java对我来说还是新的)

通常,当我编写代码时,我喜欢尽可能地将脚本编写在主块之外,然后根据需要调用函数,就像我将要展示的示例中那样。我还用大量的前斜杠夸大了结构

public class Script {

    ///////////////////////////////////////////////////////////////// start main
    public static void main(String[] args) {

        System.out.println("Script Is Starting");    // basic message

        classCONN conn = new classCONN();            // connect class
        Connection cnct = null;                      // connect variable
                                                     //
        try {                                        // try connect
           conn.func_driverCheck();                  //
           cnct = conn.func_dbConnect();             //
        } catch(SQLException log) {                  //
           System.out.println(log);                  //
        }                                            //

        *i would like to call the prepare*
        *statements function once for the*
        *rest of the script*

        classSQL sql = new classSQL();               // prepare statements
        sql.func_prep(cnct);                         //

        users_sel.setString(1, "zoh");               // insert with prepared
        users_sel.setString(2, "my");                // statements
        users_sel.setString(3, "goodness");          //
        row = users_sel.executeQuery();              //

    }
    ///////////////////////////////////////////////////////////////// end main

    ///////////////////////////////////////////////////////////////// start classes
    class classCONN {

       public void func_driverCheck() {*code to check driver*}

       public Connection func_dbConnect() {*code to connect to db*}

    }

    class classSQL {

       *I would like to prepare my statements here*

       public void f_prep(Connection cnct) {
           lv_sql = "INSERT INTO users " +
                    "VALUES(?, ?, ?)";
           PreparedStatement users_ins = cnct.prepareStatement(lv_sql);
       }

    }
    ///////////////////////////////////////////////////////////////// end classes

}

所以我的问题是,有没有一种方法可以让这样的代码工作,这样语句就准备好了,然后我就可以在不同的类中或在main中或类似的任何地方执行更新,而不需要在main块中完全准备语句


好的,我已经对我自己的问题提出了一个答案,我想把它贴在这里,以防任何人都能从中受益,或者有什么可以补充的,因为这就是这个社区的目的

public class Prog {

    // static variables ---------------------------------------------------
    static Connection conn;
    static ResultSet row;

    // main ---------------------------------------------------------------
    public static void main(String[] args) {

       // connect to db ---------------------------------------------------
       try {
          DBConnect cl_conn = new DBConnect();
          conn = cl_conn.f_connect();
       } catch(Exception log) {
          System.out.println("FAIL")
       }

       // prepare statements ----------------------------------------------
       SQLPrep prep = new SQLPrep(conn);

       // execute statement 01 --------------------------------------------
       try {
          prep.users_sel.setInt(1, 2);           // pass values to stmnt
          row = prep.users_sel.executeQuery();   // execute stmnt
       } catch(SQLException log) {
          System.out.println("FAIL");
       }

    }

}

class DBConnect {
   ***code to connect to db***
}

// all prepared stmnts in one place ----------------------------------------
class SQLPrep {

   static PreparedStatement users_sel = null;    // select from users
   static PreparedStatement access_sel = null;   // select from access

   try {

      sp_sql = "SELECT * FROM USERS WHERE u_id = ?";
      users_sel = conn.prepareStatement(sp_sql);

      sp_sql = "SELECT * FROM ACCESS WHERE a_id = ?";
      access_sel = conn.prepareStatement(sp_sql);

   } catch(SQLException log) {
      System.out.println("FAIL");
   }

}

对某些人来说,这可能看起来很奇怪,但我发现这是一种非常干净整洁的代码结构方式(尽可能多地将代码保留在主代码之外)。即使是执行语句的块也可以移动到单独的函数中,只需传递“prep.users\u prep”即可工作。

这是我开始的好地方,不完全是我所想的,但这让我知道了如何实现我想要的流程。您可能想看看。stackoverflow和codereview之间的区别是什么?codereview是为了让您的(工作)代码得到审查,包括最佳实践的建议。哦,kwl,我不知道堆栈交换有多大