对于想了解将数据集公开到xml文件中,导致DBunit中出现错误的读者,本文将提供新的信息,我们将详细介绍将数据集存入数据框,并且为您提供关于.net–构建xunit.xml文件后我应该使用xUnit
对于想了解将数据集公开到xml文件中,导致DBunit中出现错误的读者,本文将提供新的信息,我们将详细介绍将数据集存入数据框,并且为您提供关于.net – 构建xunit.xml文件后我应该使用xUnitPublisher还是xUnitBuilder?、Android SQLite 导出数据库到XML文件、android-在eclipse中打开xml文件时出现错误、Android中保存数据到XML文件中的有价值信息。
本文目录一览:- 将数据集公开到xml文件中,导致DBunit中出现错误(将数据集存入数据框)
- .net – 构建xunit.xml文件后我应该使用xUnitPublisher还是xUnitBuilder?
- Android SQLite 导出数据库到XML文件
- android-在eclipse中打开xml文件时出现错误
- Android中保存数据到XML文件中
将数据集公开到xml文件中,导致DBunit中出现错误(将数据集存入数据框)
大家好,我正在使用dbunit。我正在尝试将db的数据集导出到xml文件中。
import java.sql.Connection;import java.sql.DriverManager;import org.dbunit.database.DatabaseConnection;import org.dbunit.database.IDatabaseConnection;import org.dbunit.dataset.IDataSet;import org.dbunit.dataset.xml.FlatXmlDataSet;import java.io.FileOutputStream;public class DatabaseExport{ public static void main(String[] args) throws Exception { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); Connection jdbcConnection = DriverManager.getConnection("jdbc:sqlserver://172.26.37.113:1433;DatabaseName=def_config","sqladmin_","halloween$2004"); IDatabaseConnection connection = new DatabaseConnection( jdbcConnection ); // full database export IDataSet fullDataSet = connection.createDataSet(); FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full.xml")); }}
但是它给出了这样的错误:
Exception in thread "main" org.dbunit.dataset.DataSetException: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword ''user''. at org.dbunit.database.DatabaseDataSet.getTable(DatabaseDataSet.java:323) at org.dbunit.database.DatabaseTableIterator.getTable(DatabaseTableIterator.java:89) at org.dbunit.dataset.stream.DataSetProducerAdapter.produce(DataSetProducerAdapter.java:83) at org.dbunit.dataset.xml.FlatXmlWriter.write(FlatXmlWriter.java:124) at org.dbunit.dataset.xml.FlatXmlDataSet.write(FlatXmlDataSet.java:378) at DatabaseExport.main(DatabaseExport.java:23)Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword ''user''. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493) at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:775) at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:611) at org.dbunit.database.AbstractResultSetTable.<init>(AbstractResultSetTable.java:110) at org.dbunit.database.ForwardOnlyResultSetTable.<init>(ForwardOnlyResultSetTable.java:59) at org.dbunit.database.CachedResultSetTableFactory.createTable(CachedResultSetTableFactory.java:60) at org.dbunit.database.DatabaseDataSet.getTable(DatabaseDataSet.java:319) ... 5 more
答案1
小编典典我的猜测是user
您的数据库中有一个表。但是user
是MSSQL中的保留关键字。DBUnit创建一些查询,例如:
SELECT * FROM user;
但这会产生您所看到的错误。相反,DBUnit必须创建如下查询:
SELECT * from [user];
我认为您可以使用DBUnit
的转义模式配置设置来解决此问题。我自己没有尝试过,但是类似的东西应该可以工作:
connection.getConfig().setProperty(DatabaseConfig.PROPERTY_ESCAPE_PATTERN , "[?]");
我希望这有帮助!:)
.net – 构建xunit.xml文件后我应该使用xUnitPublisher还是xUnitBuilder?
鉴于我的Jenkins文件中的以下片段,我为每个测试项目生成一个XML文件.在下一步中,我想处理这些XML文件.
jenkins有两种选择.我很困惑使用哪个选项.我使用“进程”还是“发布”.两者都给出了关于阈值的相同选项,两者似乎都是一样的.它们都标记了构建失败,它们都为Jenkins提供了测试报告.这是遗产吗?或者他们是完全不同的步骤,有自己的目的吗?
顺便说一下,这次FAILURE检查并抛出错误是阻止Jenkins继续构建的唯一方法吗?当构建标记为Failed以继续其余步骤时,似乎有点奇怪.如果我想继续,我也可以将stopProcessingIfError设置为false,或者我错过了这一点?
stage('Test') { def testScript = "" def testProjects = findFiles(glob: 'test/**/project.json') if (!fileExists('reports/xml')) { if (!fileExists('reports')) { sh "mkdir reports" } sh "mkdir reports/xml" } for(prj in testProjects) { println "Test project located,running tests: " + prj.path def matcher = prj.path =~ 'test\\/(.+)\\/project.json' testScript += "dotnet test --no-build '${prj.path}' -xml 'reports/xml/${matcher[0][1]}.Results.xml' || true\n" } sh testScript step([ $class: 'XUnitBuilder',thresholdMode: 1,thresholds: [[$class: 'FailedThreshold',failureThreshold: '1']],tools: [[ $class: 'XUnitDotNetTestType',deleteOutputFiles: true,failIfNotNew: true,pattern: 'reports/xml/*.Results.xml',skipNoTestFiles: false,stopProcessingIfError: true ]] ]) if (currentBuild.result.equals("FAILURE")) { throw "Test results did not pass thresholds" } }
关键的区别似乎是XUnitPublisher类扩展了hudson.tasks.Recorder
类,而XUnitBuilder扩展了hudson.tasks.Builder
.
我认为面向用户的区别在于,构建器中的失败将Jenkins作业标记为“失败”,而发布者中的失败则将作业标记为“不稳定”. (来源:https://wiki.jenkins.io/display/JENKINS/Terminology)
鉴于这一切,我建议使用xUnitPublisher.我设置我的构建命令,如果编译通过但是一些测试失败,则返回0.这样,Jenkins给我一个Failed状态,用于破解编译和工作编译的UNSTABLE状态,但是测试失败.我喜欢这样.
提交历史并不能解释为什么存在这种荒谬的代码重复.我知道如果一个是以另一个方式实现的,就像通常在弃用时所做的那样……可能是因为每个都必须有一个不同的超类.
XUnitBuilder.java,XUnitPublisher.java
Android SQLite 导出数据库到XML文件
使用SQLiteOpenHelper 创建的数据库为应用程序私有,其路径一般为DATA/data/APP_NAME/databases/FILENAME
DATA 为使用Environment.getDataDirectory()返回的路径,一般为你的SD卡的路径。
APP_Name为你的应用的名称
FILENAME为你的数据库的文件名
其它程序一般无法访问这个文件,因此也给调试带来了不便,当然你可以使用Android SDK 的sqlite3 工具来直接访问这个数据,但个人还是觉的sqlite 使用起来不是十分方便。
你也可以将数据库创建者SD卡上面,此时可以使用SQLiteDatabase 的openOrCreateDatabase 指定要创建的数据库的文件名(指定SD卡上的某个文件名)。
也可以将数据库使用代码复制到SD卡上。 此时可以使用一些桌面系统上的SQLite管理工具,比如Firefox 的SQL Lite manager 插件来访问这个数据库。
一种简洁的方法是将数据库导出到XML文件,下面类DatabaseDump的实现,可以将如何一个数据库所有表和表的内容导出到XML文件中
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
class DatabaseDump {
public DatabaseDump(SQLiteDatabase db,String destXml) {
mDb = db;
mDestXmlFilename=destXml;
try {
// create a file on the sdcard to export the
// database contents to
File myFile = new File(mDestXmlFilename);
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
BufferedOutputStream bos = new BufferedOutputStream(fOut);
mExporter = new Exporter(bos);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void exportData() {
try {
mExporter.startDbExport(mDb.getPath());
// get the tables out of the given sqlite database
String sql = "SELECT * FROM sqlite_master";
Cursor cur = mDb.rawQuery(sql, new String[0]);
cur.moveToFirst();
String tableName;
while (cur.getPosition() < cur.getCount()) {
tableName = cur.getString(cur.getColumnIndex("name"));
// don''t process these two tables since they are used
// for metadata
if (!tableName.equals("android_metadata")
&& !tableName.equals("sqlite_sequence")) {
exportTable(tableName);
}
cur.moveToNext();
}
mExporter.endDbExport();
mExporter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void exportTable(String tableName) throws IOException {
mExporter.startTable(tableName);
// get everything from the table
String sql = "select * from " + tableName;
Cursor cur = mDb.rawQuery(sql, new String[0]);
int numcols = cur.getColumnCount();
cur.moveToFirst();
// move through the table, creating rows
// and adding each column with name and value
// to the row
while (cur.getPosition() < cur.getCount()) {
mExporter.startRow();
String name;
String val;
for (int idx = 0; idx < numcols; idx++) {
name = cur.getColumnName(idx);
val = cur.getString(idx);
mExporter.addColumn(name, val);
}
mExporter.endRow();
cur.moveToNext();
}
cur.close();
mExporter.endTable();
}
private String mDestXmlFilename = "/sdcard/export.xml";
private SQLiteDatabase mDb;
private Exporter mExporter;
class Exporter {
private static final String CLOSING_WITH_TICK = "''>";
private static final String START_DB = "<export-database name=''";
private static final String END_DB = "</export-database>";
private static final String START_TABLE = "<table name=''";
private static final String END_TABLE = "</table>";
private static final String START_ROW = "<row>";
private static final String END_ROW = "</row>";
private static final String START_COL = "<col name=''";
private static final String END_COL = "</col>";
private BufferedOutputStream mbufferos;
public Exporter() throws FileNotFoundException {
this(new BufferedOutputStream(new FileOutputStream(mDestXmlFilename)));
}
public Exporter(BufferedOutputStream bos) {
mbufferos = bos;
}
public void close() throws IOException {
if (mbufferos != null) {
mbufferos.close();
}
}
public void startDbExport(String dbName) throws IOException {
String stg = START_DB + dbName + CLOSING_WITH_TICK;
mbufferos.write(stg.getBytes());
}
public void endDbExport() throws IOException {
mbufferos.write(END_DB.getBytes());
}
public void startTable(String tableName) throws IOException {
String stg = START_TABLE + tableName + CLOSING_WITH_TICK;
mbufferos.write(stg.getBytes());
}
public void endTable() throws IOException {
mbufferos.write(END_TABLE.getBytes());
}
public void startRow() throws IOException {
mbufferos.write(START_ROW.getBytes());
}
public void endRow() throws IOException {
mbufferos.write(END_ROW.getBytes());
}
public void addColumn(String name, String val) throws IOException {
String stg = START_COL + name + CLOSING_WITH_TICK + val + END_COL;
mbufferos.write(stg.getBytes());
}
}
}
android-在eclipse中打开xml文件时出现错误
这个问题已经在这里有了答案: > Eclipse and Android XML layouts gives “’default’ is not a best match for any device/locale combination” 3个
在Eclipse中,我在控制台中出错,当我打开两个具有相同数据的不同名称的xml文件(意味着A和B是2个xml文件.它们具有相同的数据).
我在控制台中收到以下错误.为什么会出现此错误.
怎么处理呢?
[2011-07-20 15:04:03 - RoadBrake] 'default' is not a best match for any device/locale combination.
[2011-07-20 15:04:03 - RoadBrake] displaying it with 'Locale Language ___Region __, Small Screen, Short screen aspect ratio, Portrait Orientation, No Dock, Day time, Low Density, Finger-based touchscreen, Soft keyboard, No keyboard, Exposed navigation, No navigation, Screen resolution 320x240' which is compatible, but will actually be displayed with another more specific version of the layout.
解决方法:
如果您使用Project-> Clean,则通常可以正常工作.
Android中保存数据到XML文件中
在布局文件中定义两个按钮
在这里就不写出来了
在MainActivity中:
public class MainActivity extends Activity {
ArrayList<StudentBean> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<StudentBean>();
for (int i = 1; i <= 20; i++) {
Random rd = new Random();
list.add(new StudentBean("" + i, "zhangsan" + i,
rd.nextBoolean() ? "男" : "女"));
}
}
public void xmlSave1(View v) {
// 1.直接写入到文件中并且注意格式的规范
try {
FileOutputStream fos = this.openFileOutput("stu1.xml",
Context.MODE_PRIVATE);
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<students>");
for (int i = 0; i < 20; i++) {
sb.append("<student>");
sb.append("<no>");
sb.append(list.get(i).getNo());
sb.append("</no>");
sb.append("<name>");
sb.append(list.get(i).getName());
sb.append("</name>");
sb.append("<sex>");
sb.append(list.get(i).getSex());
sb.append("</sex>");
sb.append("</student>");
}
sb.append("</students>");
fos.write(sb.toString().getBytes());
fos.close();
Toast.makeText(this, "file saving success", 0).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void xmlSave2(View v) {
// 2.通过相应的API写入xml文件
try {
XmlSerializer xs = Xml.newSerializer();
xs.setOutput(this.openFileOutput("stu2.xml", Context.MODE_PRIVATE),
"utf-8");
xs.startDocument("utf-8", true);
xs.startTag(null, "students");
for (int i = 0; i < 20; i++) {
xs.startTag(null, "student");
xs.startTag(null, "no");
xs.text(list.get(i).getNo());
xs.endTag(null, "no");
xs.startTag(null, "name");
xs.text(list.get(i).getName());
xs.endTag(null, "name");
xs.startTag(null, "sex");
xs.text(list.get(i).getSex());
xs.endTag(null, "sex");
xs.endTag(null, "student");
}
xs.endTag(null, "students");
xs.endDocument();
Toast.makeText(this, "file save success", 0).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
今天关于将数据集公开到xml文件中,导致DBunit中出现错误和将数据集存入数据框的介绍到此结束,谢谢您的阅读,有关.net – 构建xunit.xml文件后我应该使用xUnitPublisher还是xUnitBuilder?、Android SQLite 导出数据库到XML文件、android-在eclipse中打开xml文件时出现错误、Android中保存数据到XML文件中等更多相关知识的信息可以在本站进行查询。
本文标签: