Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将MS SQL Server表复制到SQLite表_Java_Android_Sql Server_Sqlite_Jtds - Fatal编程技术网

Java 将MS SQL Server表复制到SQLite表

Java 将MS SQL Server表复制到SQLite表,java,android,sql-server,sqlite,jtds,Java,Android,Sql Server,Sqlite,Jtds,一点背景:我正在制作一个Android应用程序,它将在大部分时间保持离线状态。当应用程序连接到wifi时,需要与MS SQL server数据库同步。车载数据库是SQLite。我对Java/Android开发也很陌生,所以如果我遗漏了一些明显的地方,我很抱歉 我能够使用JTDS驱动程序很好地与MS SQL server进行事务处理,但是当我查询MS SQL server时,我最终得到一个ResultSet对象,我必须一次循环一行。是否有一种工具/方法可以简单地将ResultSet中的所有行插入S

一点背景:我正在制作一个Android应用程序,它将在大部分时间保持离线状态。当应用程序连接到wifi时,需要与MS SQL server数据库同步。车载数据库是SQLite。我对Java/Android开发也很陌生,所以如果我遗漏了一些明显的地方,我很抱歉

我能够使用JTDS驱动程序很好地与MS SQL server进行事务处理,但是当我查询MS SQL server时,我最终得到一个ResultSet对象,我必须一次循环一行。是否有一种工具/方法可以简单地将ResultSet中的所有行插入SQLite数据库表

我目前正在使用标准:

ArrayList<ArrayList<String>> table = new ArrayList<>(); // a list of lists to represent a table
ArrayList<String> row = new ArrayList<>(); // a list to represent a row of the table

Class.forName("net.sourceforge.jtds.jdbc.Driver"); 

conn = DriverManager.getConnection(connectionString);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData meta = rs.getMetaData();

while (rs.next())
{
     row = new ArrayList<>();

     for (int i = 1; i < meta.getColumnCount() + 1; i++) // load data into List
     {
         row.add(rs.getString(i));
     }

     table.add(row);
 }
ArrayList table=new ArrayList();//表示表的列表列表
ArrayList行=新建ArrayList();//表示表中某一行的列表
类forName(“net.sourceforge.jtds.jdbc.Driver”);
conn=DriverManager.getConnection(connectionString);
语句stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(查询);
ResultSetMetaData meta=rs.getMetaData();
while(rs.next())
{
行=新的ArrayList();
for(int i=1;i

从这里开始,我将循环遍历我的列表,并将每一行逐个添加到SQLite数据库表中。这对我来说似乎效率低下。他只是在寻找一种更好的方法,在安卓设备上将表从MS SQL Server复制到SQLite

看起来像是一个
选择进入
可以快速轻松地完成这项任务@KlingKlang,因为“newtable”和“oldtable”来自两个完全不同类型的数据库,分别位于两个不同的设备上。我无法从Android应用程序运行SQLite查询并使用该查询查询MS SQL数据库。我必须首先从MS SQL Server获取数据,这将给我留下一个JBDC/JTDS ResultSet对象,如我在文章中所述。@KlingKlang我可以以某种方式将ResultSet转换为CSV,我确信,但这不就是额外的开销吗?正如我所说,我可以将ResultSet解析为SQLite表,但它似乎效率低下。我认为从ResultSet到CSV再到SQLite表同样效率低下。@KlingKlang尽管我确实看到了一个使用ODBC驱动程序的链接服务器选项,在这里我可以从SQLite查询MS SQL Server:和。也许我会试试,或者反过来。(将INSERT INTO命令从SQL Server抛出到SQLite)