我刚刚意识到DBUnit本身不会创建表(请参阅如何在不面对NoSuchTableException的情况下使用具有普通JDBC和HSQLDB的DBUnit进行测试?)。
DBUnit有什么方法可以根据数据集或dtd自动创建表吗?
编辑: 为了简单测试像HSQLDB这样的内存数据库,可以使用粗略的方法来自动创建表:
private void createHsqldbTables(IDataSet dataSet, Connection connection) throws DataSetException, SQLException {
String[] tableNames = dataSet.getTableNames();
String sql = "";
for (String tableName : tableNames) {
ITable table = dataSet.getTable(tableName);
ITableMetaData metadata = table.getTableMetaData();
Column[] columns = metadata.getColumns();
sql += "create table " + tableName + "( ";
boolean first = true;
for (Column column : columns) {
if (!first) {
sql += ", ";
}
String columnName = column.getColumnName();
String type = resolveType((String) table.getValue(0, columnName));
sql += columnName + " " + type;
if (first) {
sql += " primary key";
first = false;
}
}
sql += "); ";
}
PreparedStatement pp = connection.prepareStatement(sql);
pp.executeUpdate();
}
private String resolveType(String str) {
try {
if (new Double(str).toString().equals(str)) {
return "double";
}
if (new Integer(str).toString().equals(str)) {
return "int";
}
} catch (Exception e) {}
return "varchar";
}
在创建命令如下所示的配置单元表之后,我调用hql=[],这将花费9个映射器,与HDFS中的文件数量相同。 但我想要的是把所有的部分-I在一个分裂中,这样,应该只有三个映射器。 我尝试从继承,以测试自定义的是否可以工作。 但是当我将它挂载到配置单元中时,它返回异常: 有人能给我点线索吗?多谢!
材料设计非常强调“纸张”的隐喻。要做到这一点,阴影是必不可少的。由于材料设计是一种理念,而不是API(尽管它内置在L中),因此应该在任何地方(Windows窗体、HTML/CSS等)进行设计。如何在Android API 14到20中做到这一点? 请注意,对于圆形和其他非方形形状,预制PNG实际上并不实用。
问题内容: 我们的客户希望在记录创建日期之前订购。在我看来,这似乎是一个系统变量,它是记录本身的某种元数据。 有没有一种方法可以告诉您何时创建了一条记录,而没有实际创建带有默认值GetDate()的datetime字段,并希望没有人修改它? 问题答案: 没有。 您需要为此提供一列。 想象一下,如果您需要为创建的每条记录保留一条记录,那么元数据将有多大!您是否还想将元数据保留在元数据上,以便知道元数
问题内容: 我有一个使用XML和反射将 s 返回到另一个类的类。 通常,这些对象是外部对象的子字段,但有时我想即时生成它。我已经尝试过类似的方法,但无济于事。我相信这是因为Java不允许你访问进行反射的方法。 如果提供的方法失败,则失败。我可以通过制作方法来解决它,或者制作另一个类来派生它。 长话短说,我只是想知道是否存在一种通过反射访问方法的方法。 问题答案: 你可以使用反射调用私有方法。修改已
问题内容: 我正在使用MS Access2003。我想在MS Access中的“查询”中运行大量插入SQL语句。有没有简单(或确实有任何方法)做到这一点? 问题答案: 是的,没有。 您不能: 但是你可以做 如果您还没有表中的数据,那对您有什么帮助?好吧,您可以制作一个由很多带有硬编码结果的Select联合组成的Select语句。 注意:我还必须包括某种形式的虚拟表(例如,onerow),以愚弄访问
这看起来很奇怪,因为可以自动生成这些迁移(例如,像django一样),而且令人惊讶的是,V1的create-commands是自动生成的,但是如果我以后添加一个表,我必须手动键入命令。 那么,我是错过了它,还是我真的必须编写迁移?