栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将嵌入式数据库打包到jar文件中

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将嵌入式数据库打包到jar文件中

数据库应位于运行jar的文件夹中。如果不是,请检查docs如何指定

connectionURL
。如果将项目导出到可运行的jar文件,请指定不解压缩相关库,而不必将其直接提取到jar或本地lib文件夹中。这些库位于
derby.jar
并且
derbytools.jar
应该位于类路径或清单类路径中。使用以下代码测试您的

Communicate
类。

import java.io.File;import java.security.NoSuchAlgorithmException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Communicate {  private static final String dbURL = "jdbc:derby:imagesDB;create=true";  private static final String tableName = "imageDB";  private static Connection conn = null;  private static Statement stmt = null;  public void insert(String path, String hash, long FileSize,          String label_name) throws NoSuchAlgorithmException, Exception {    try {      stmt = conn.createStatement();      stmt.execute("insert into " + tableName + " values ('" + path        + "'," + FileSize + ",'" + hash + "'" + ",'"        + label_name + "')");      stmt.close();      System.out.println("Inserted into table "+ tableName+ " values ('" + path        + "'," + FileSize + ",'" + hash + "'" + ",'"        + label_name + "')");    } catch (SQLException sqlExcept) {      sqlExcept.printStackTrace();    }  }  public void loadDriver() {    try {      Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();      System.out.println("Loaded the appropriate driver");    } catch (Exception except) {      except.printStackTrace();    }  }  public void createConnection() {    try {      // Get a connection      conn = DriverManager.getConnection(dbURL);      System.out.println("Connected to and created database ");    } catch (Exception except) {      except.printStackTrace();    }  }  public void createTable() throws SQLException {    Statement st = conn.createStatement();    st.execute("CREATE TABLE "      + tableName      + " (fullPath VARCHAr(512), fileSize INTEGER, md5 VARCHAr(512), label_name VARCHAr(100))");    System.out.println("Created table "+ tableName);  }  public void indexTable() throws SQLException {    Statement st = conn.createStatement();    st.execute("CREATE INDEX imageDBIndex ON imageDB (fullPath, label_name)");    System.out.println("Created index "+ "imageDBIndex");  }  public void deleteTable() throws SQLException {    Statement st = conn.createStatement();    st.execute("drop table " + tableName);    System.out.println("Deleted table "+ tableName);  }  public String searchBySizeAndMD(String file_path, long size, String hash)    throws SQLException {    StringBuilder sb = new StringBuilder();    Statement st = conn.createStatement();    ResultSet rs = st      .executeQuery("SELECT fullPath, label_name FROM (SELECt * FROM imageDB im WHERe im.fileSize = "        + size + " ) as A WHERe A.md5 = " + "'" + hash + "'");    while (rs.next()) {      sb.append("Image: (" + rs.getString("fullPath")        + ") is at label: (" + rs.getString("label_name") + ")n");    }    return sb.toString();  }  public String searchByImageName(String fileName) throws SQLException {    StringBuilder sb = new StringBuilder();    Statement st = conn.createStatement();    ResultSet rs = st      .executeQuery("SELECt fullPath, label_name FROM imageDB im WHERe im.fullPath like '%"        + fileName + "%'");    while (rs.next()) {      File out_path = new File(rs.getString("fullPath"));      if (!fileName.equals(out_path.getName())) continue;      sb.append("Image: (" + out_path.getPath()        + ") is at label: (" + rs.getString("label_name") + ")n");    }    return sb.toString();  }  public void deleteLabel(String label) throws SQLException {    Statement st = conn.createStatement();    st.execute("DELETE FROM " + tableName + " WHERe label_name = '" + label + "'");  }  public static void main(String[] args)  {    Communicate c = new Communicate();    c.loadDriver();    try {      c.createConnection();      c.createTable();      c.indexTable();      c.insert("/some/path", "12323423", 45656567, "label name");      String s = c.searchBySizeAndMD("/some/path", 45656567, "12323423");      System.out.println("Search result: "+ s);      c.deleteTable();      conn.commit();      System.out.println("Committed the transaction");      //Shutdown embedded database      try      {        // the shutdown=true attribute shuts down Derby        DriverManager.getConnection("jdbc:derby:;shutdown=true");      }      catch (SQLException se)      {        if (( (se.getErrorCode() == 50000)          && ("XJ015".equals(se.getSQLState()) ))) {          // we got the expected exception          System.out.println("Derby shut down normally");        } else {          System.err.println("Derby did not shut down normally");          System.err.println("  Message:    " + se.getMessage());        }      }    } catch (Exception e) {      System.err.println("  Message:    " + e.getMessage());    } finally {      // release all open resources to avoid unnecessary memory usage      //Connection      try {        if (conn != null) {          conn.close();          conn = null;        }      } catch (SQLException e) {        System.err.println("  Message:    " + e.getMessage());      }    }    System.out.println("Communicate finished");  }}

这是输出:

Loaded the appropriate driverConnected to and created database Created table imageDBCreated index imageDBIndexInserted into table imageDB values ('/some/path',45656567,'12323423','label name')Search result: Image: (/some/path) is at label: (label name)Deleted table imageDBCommitted the transactionDerby shut down normallyCommunicate finished


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570135.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号