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

它在第二个(目标).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 数据库的用户表中的数据复制到第二个 .db 数据库的用户表中,但事实并非如此。但是,Unity 不会给我任何错误。正在创建表,但未向其中填充数据。


泛舟湖上清波郎朗
浏览 89回答 1
1回答

慕工程0101907

由于 SQLite 不支持,如果表不存在select into,您可以使用:create table as selectcreate&nbsp;table&nbsp;dest&nbsp;as&nbsp;select&nbsp;*&nbsp;from&nbsp;source或者insert into select如果表存在或您创建它:insert&nbsp;into&nbsp;dest&nbsp;select&nbsp;*&nbsp;from&nbsp;source
打开App,查看更多内容
随时随地看视频慕课网APP