我试图存储的数据是来自存储在JSON文件中的tweet的元数据,但为了简单起见,我准备了一个带有更基本示例的演示。在这个演示中,我将尝试创建并填充一个只有4个字段的表和一个非常简单的JSON文件,其中包含要存储的数据。代码如下:
private static void demo(KVStore kvstore, String file2load) {
//Creating the table
String query = "CREATE TABLE Carros (plate STRING, brand STRING, owner STRING, km NUMBER, primary key (plate))";
try {
kvstore.executeSync(query);
} catch (IllegalArgumentException e) {
System.out.println("Invalid statement:\n" + e.getMessage());
} catch (FaultException e) { //ATENTION HERE <-
System.out.println("Statement couldn't be executed, please retry: " + e);
}
System.out.println("Table created");
//Fill up the table
populateTable(kvstore, file2load);
System.exit(0);
}
上面看到的是在main中调用的方法。现在,我还将populateTable()方法留在下面,尽管它工作得很好:
private static void populateTable(KVStore kvstore, String file2load) {
TableAPI tableH = kvstore.getTableAPI();
Table myTable = tableH.getTable("Carros");
BufferedReader br = null;
FileReader fr = null;
try {
String jObj = "";
String currLine;
int tCount = 0;
boolean buildObj = false;
boolean beganParsing = false;
fr = new FileReader(file2load);
br = new BufferedReader(fr);
while ((currLine = br.readLine()) != null) {
tCount += countParens(currLine, '{');
if ((currLine = br.readLine()) == "\n") {
continue;
}
if (tCount > 0) {
buildObj = true;
beganParsing = true;
}
//Anadimos la linea leida
if (buildObj) {
jObj += currLine;
}
tCount -= countParens(currLine, '}');
if (tCount < 1)
buildObj = false;
if (beganParsing && !buildObj) {
Row row = myTable.createRowFromJson(jObj, false);
tableH.put(row, null, null);
jObj = "";
}
}//While
} catch (FileNotFoundException fnfe) {
System.out.println("File not found: " + fnfe);
System.exit(-1);
} catch (IOException ioe) {
System.out.println("IOException: " + ioe);
System.exit(-1);
} finally {
try {
if (br != null)
br.close();
if (fr != null)
fr.close();
} catch (IOException iox) {
System.out.println("IOException on close: " + iox);
}
}
}//populateTable
所以我这里的问题是,每次我执行这个程序,它到达执行结束时都没有问题,因为我使用了try-catch块,但是,它不创建也不填充任何表。我得到的信息是:
execute "CREATE TABLE ....."
因为这也行不通。有什么想法吗?提前谢谢你。
当在try块中引入查询变量声明时,这个问题得到了解决;换句话说:
private static void demo(KVStore kvstore, String file2load) {
//Creating the table
String query;
try {
query = "CREATE TABLE Carros (plate STRING, brand STRING, owner STRING, km NUMBER, primary key (plate))";
kvstore.executeSync(query);
} catch (IllegalArgumentException e) {
System.out.println("Invalid statement:\n" + e.getMessage());
} catch (FaultException e) { //ATENTION HERE <-
System.out.println("Statement couldn't be executed, please retry: " + e);
}
System.out.println("Table created");
//Fill up the table
populateTable(kvstore, file2load);
System.exit(0);
}
但是,如果执行以下命令:
执行“从Carros中选择*”
问题内容: 我一直在做倒计时计划,我想到了这个。 在while循环的最后,没有内部的print / println语句,倒计时代码将不会执行。怎么会?该程序可以很好地与print语句一起工作。 问题答案: 首先,您的程序是 线程不安全的, 因为它是一个 共享变量 ,但是在同步块中既不访问也不访问。 现在,偶然地是一种同步方法,并且在任何实际架构上,使用 内存屏障 CPU指令来实现进入和退出同步块,
问题内容: 我在Hibernate尝试了简单的程序,并发现了一堆异常。 我不知道到底是什么问题。 我有三个课程-书籍,阅读器和使用。最后一个是将前两个绑定为一对多。 这是我的: 这是异常消息: 的摘要: DB上的所有表均已创建,但为空。一切都还好。有什么建议么? 如何解决这个麻烦? 问题答案: 在MySQL中, USING 是保留字。 因此,只需使用实体上的注释来重命名表即可。就像是 我假设您有一
我得到以下错误,当我尝试添加一个应用程序和应用程序设置。以下是详细的错误消息: 下面是junit测试 这是保存应用程序和设置的方法 这些是DAO类。 这是应用刀 为什么我会得到上面的错误?如果你们需要更多的信息,请告诉我。 更新
问题内容: 我有一个测试用例: 我想在其他测试用例中使用它: 这引起了: 我看了调用异常的单元测试代码,看起来测试不应该以这种方式编写。有没有一种标准的方法可以编写您想要测试的东西,以便以后的测试可以重用?还是有解决方法? 作为一种可疑的解决方法,我现在添加了一个空方法。 问题答案: 确实具有深层的魔力- 如果您选择使用它来运行单元测试(我愿意,因为这样,我可以在工作场所中使用集成到构建系统中的非
问题内容: 我在代码中有很多地方可以处理Alamofire请求/响应。 由于某些间歇性问题(最常见的是不稳定的网络),每个请求都可能失败。 我希望能够在重试前重试请求3次。 直接的方法是拥有类似的东西 但是,出于多种原因,我不喜欢这种方法。最明显的是,我将需要为每种请求类型实现这样的代码(并且我有15种这样的代码)。 我很想知道是否有办法做类似的事情(变化很小且非侵入性) 问题答案: 通过Swif
问题内容: 我正在使用Django-CMS的Django项目中构建一个相当简单的应用程序,即研究项目。(这是我对项目/应用程序的首次尝试。)它的主要目的是存储各种知识资产(例如,研究人员撰写的文章,书籍等)。 问题是,当我将浏览器指向/ research /时,出现一条错误,提示表’research_journal’不存在(“ no such table”)。 我正在使用带有sqlite3数据库的