在Unity中使用SQlite,将表从一个数据库复制到另一个数据库的SqliteCommand是什么,考虑到两个表是相同的?

问题描述 投票:0回答:1

它在第二个(目标).db数据库中正确创建Users表,但是它不会使用原始.db数据库的Users表的数据填充它。这两个表是相同的。他们实际上甚至都没有主键设置。我需要将原始表中的数据复制到目标表。

我尝试了以下内容,但没有成功复制部分:

public class DatabaseAccess
{
    private static string _connDatabaseStringUsers = "URI=file:c:/TSV3/TS" + "DemoUsers" + ".db; Version=3; Journal Mode=Off; Synchronous=Off;";
}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Linq;
using Mono.Data.Sqlite;
using System.IO;
using System.Data;
using System;

public class GameInstance : Singleton<GameInstance> {

private SqliteConnection _conn4;
private SqliteConnection _conn5;

public void Start()
{
     CreateTable();
}

public void CreateTable()
{
     _conn4 = new SqliteConnection(DatabaseAccess.ConnDatabaseStringUsers);
     _conn4.Open();

     try
     {
          SqliteCommand cmd4 = new SqliteCommand("CREATE TABLE IF NOT EXISTS Users ('ID' INTEGER, 'FileNumber' TEXT, 'FamilyName' TEXT, 'Name' TEXT, 'ParentFolderID' INTEGER, 'AvatarSex' INTEGER, 'Role' INTEGER)", _conn4);
          cmd4.ExecuteNonQuery();
     }

     catch (UnityException e)
     {
       Debug.LogError(e);
     }

     finally
     {
       _conn4.Close();
     }

     CopyTable();
}

public void CopyTable()
{
     _conn5 = new SqliteConnection(DatabaseAccess.ConnDatabaseStringUsers);
     _conn5.Open();

     try
     {
          SqliteCommand cmd5 = new SqliteCommand("SELECT * INTO Users IN 'TSDemo.db' FROM Users", _conn5);
          cmd5.ExecuteNonQuery();
     }

     catch (UnityException e)
     {
          Debug.LogError(e);
     }

     finally
     {
          _conn5.Close();
     }
   }
 }

我希望来自第一个.db数据库的表Users的数据从第二个.db数据库复制到表Users,但事实并非如此。但是,Unity不会给我任何错误。正在创建表,但不会将数据填充到其中。

c# unity3d
1个回答
1
投票

由于SQLite不支持select into,如果表不存在,您可以使用create table as select

create table dest as select * from source

或者insert into select如果表存在或您创建它:

insert into dest select * from source
© www.soinside.com 2019 - 2024. All rights reserved.