GVKun编程网logo

将数据集公开到xml文件中,导致DBunit中出现错误(将数据集存入数据框)

20

对于想了解将数据集公开到xml文件中,导致DBunit中出现错误的读者,本文将提供新的信息,我们将详细介绍将数据集存入数据框,并且为您提供关于.net–构建xunit.xml文件后我应该使用xUnit

对于想了解将数据集公开到xml文件中,导致DBunit中出现错误的读者,本文将提供新的信息,我们将详细介绍将数据集存入数据框,并且为您提供关于.net – 构建xunit.xml文件后我应该使用xUnitPublisher还是xUnitBuilder?、Android SQLite 导出数据库到XML文件、android-在eclipse中打开xml文件时出现错误、Android中保存数据到XML文件中的有价值信息。

本文目录一览:

将数据集公开到xml文件中,导致DBunit中出现错误(将数据集存入数据框)

将数据集公开到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?

.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有一个额外的方法,其目的是我不理解(!),并且该类在实现列表中声明了更多接口.

关键的区别似乎是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文件

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文件时出现错误

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文件中

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文件中等更多相关知识的信息可以在本站进行查询。

本文标签: