从Lotus Notes数据库获取表名 - java

我正在尝试编写一个程序,该程序将通过NotesSQL驱动程序将整个Lotus Notes数据库转储到文件中。我通过jdbc:odbc连接并有

我可以执行选择并从Lotus Notes数据库获取数据

这是代码

try {
    System.out.print("Connecting... ");
    Connection con = DriverManager.getConnection("jdbc:odbc:NRC", "UserName", "Passw0rd1337");
    System.out.println("OK");
    DatabaseMetaData dmd = con.getMetaData();
    String[] tableTypes = new String[] {"TABLE", "VIEW"};
    ResultSet rs = dmd.getTables(null, null, "%", tableTypes);
    ResultSetMetaData rsd = rs.getMetaData();
    while (rs.next()) {
        for (int i=1; i<=rsd.getColumnCount();i++)
            System.out.println(i+" - "+rsd.getColumnName(i) + " - " + rs.getString(1));
    }
    con.close();
    System.out.println("Connection closed");
} catch (Exception e) {
    System.out.println(e);
}

是否有更好的方法通过NotesSQL连接到Lotus Notes数据库?因为使用我的代码,我仅获得名称的null值...

参考方案

我知道您正在尝试使用JDBC和NotesSQL。但是,根据您的需要和使用Eclipse,您可以通过Java本地访问Notes数据库,坦率地说,这比尝试使用JDBC容易得多,当您将JDBC与Domino一起使用时,这有点麻烦。即使您没有在主机上安装Lotus Notes,您仍然可以编写和部署Java Applet和Servlet来获取数据。

您将需要获取相关的Lotus Domino jar。因此,我的建议是JDBC的替代方法。

因此,只要在Eclipse项目中具有Lotus Domino jar文件,您就应该能够对视图中的任何类型的提取进行编码,甚至可以在数据库上运行即席搜索。

设置

如果这听起来像是您需要走的路,那么首先,看看使用相关Notes jar的here设置Eclipse。只有少数。 (有时您会读到有关使用CORBA和/或IIOP的信息。请尽量避免这种情况,这真是一个痛苦的世界)。

样本和摘要

This开发人员的文章(尽管已有6年历史了)仍然适用于Domino,并且是我提倡的方法的坚实基础。这篇文章开始介绍NotesFactory和Session类的初始化,以使您进入Notes API。 NotesFactory类的更多联机帮助here。

如果您有可用的Lotus Notes客户端,则可以浏览代码段here。可以在here中找到通过Java中的Views访问文档的经典示例。

之后,您可以轻松地从here中访问带有示例的Views和文档,并向大师(Bob Balaban)学习有关内存管理here的信息。

如果您要处理大量数据或运行servlet,那么内存管理很重要,否则不要过分强调它。您可以通过在Notes数据库中编写公式来执行本机搜索,然后使用“search”方法以本机执行查询。

遍历文档或视图?

最简单的方法是通过视图遍历文档和/或使用“getdocumentByKey”方法来获取集合并对此进行处理。在Domino中,“视图”等效于表。您还可以通过Database.Views属性获取视图列表

本地查询

在Notes的本机查询中很难找到明确的说明,但是我设法在网上here找到了它。

Java:在PreparedStatement(JDBC)中将null传递为long - java

我有一个变量是Long val = null; 而且我正在寻找一种将其传递给PreparedStatement语句对象的方法,以便将数据库中的字段值设置为null。statement.setLong(1,val); 它对Long无效,而对Long则无效。任何输入的想法或建议。谢谢 !!! 参考方案 您应该使用setNull method。statement.…

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

JDBC ResultSet总行 - java

我正在我的应用程序中实现分页。为此,我运行查询并获取ResultSet。现在,我想获得此ResultSet中用于分页计算的记录总数。我怎么能得到这个?我不想执行额外的SQL,而这会给我总行数。 参考方案 另一个选择是将计数聚合添加为查询中的子查询列。如果您的数据库有点聪明,它将只执行一次。您应该能够使用自己喜欢的数据库中的查询分析器轻松地检查这一点。SELE…

Java Scanner读取文件的奇怪行为 - java

因此,在使用Scanner类从文件读取内容时,我遇到了一个有趣的问题。基本上,我试图从目录中读取解析应用程序生成的多个输出文件,以计算一些准确性指标。基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪将其打开以处理内容。无论出于何种原因,扫描程序都不会读取其中的一些文件(所有UTF-8编码)。即使文件不是空的,scanner.hasNextLine()在…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)