【问题标题】:Stored Procedures in DerbyDerby 中的存储过程
【发布时间】:2011-03-02 16:08:51
【问题描述】:

我是 Derby 和一般数据库的新手。如何为嵌入式 derby 数据库创建准备好的语句?我不确定,因为数据库是嵌入式的。

我的字符串是:

final String updateString = "create table " + TABLE_NAME_TBL_IPS + " (" + TABLE_COLUMN_COMPANY + " " + TABLE_COLUMN_COMPANY_DATA_TYPE+ "," + TABLE_COLUMN_IP + " " + TABLE_COLUMN_IP_DATA_TYPE + ")";

另外,将其用作存储过程而不是准备好的语句调用有什么好处?

【问题讨论】:

    标签: java sql database derby


    【解决方案1】:

    数据库是否嵌入并不重要,只要它具有 JDBC 连接性即可。就您而言,Derby 确实为您提供了connection information

    您的代码可能如下所示:-

    // much easier to read with String.format()... in my opinion
    final String updateString = String.format("create table %s (%s %s, %s %s)",
            TABLE_NAME_TBL_IPS,
            TABLE_COLUMN_COMPANY,
            TABLE_COLUMN_COMPANY_DATA_TYPE,
            TABLE_COLUMN_IP,
            TABLE_COLUMN_IP_DATA_TYPE);
    
    Connection con = null;
    
    try {
        con = DriverManager.getConnection("jdbc:derby:yourDatabaseName");
    
        PreparedStatement ps = con.prepareStatement(updateString);
        ps.executeUpdate();
        ps.close();
    }
    catch (SQLException e) {
        e.printStackTrace();
    }
    finally {
        try {
            con.close();
        }
        catch (Exception ignored) {
        }
    }
    

    关于您的问题是使用存储过程还是PreparedStatement,您可以轻松搜索大量信息。您通常使用存储过程对一堆 SQL 语句进行分组,而 PreparedStatement 只允许您执行一个 SQL 语句。如果您打算公开该 API 以允许您的用户执行它而不考虑技术(Java、.NET、PHP),那么使用存储过程是一个好主意。但是,如果您编写此 SQL 语句只是为了让您的 Java 应用程序工作,那么只使用 PreparedStatement 是有意义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 2013-11-23
      • 2010-09-15
      • 2017-01-01
      • 2012-06-15
      相关资源
      最近更新 更多