为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
泛舟湖上清波郎朗 2022-12-04 10:33:29
它在第二个(目标).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 不会给我任何错误。正在创建表,但未向其中填充数据。
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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

create table dest as select * from source

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

insert into dest select * from source


查看完整回答
反对 回复 2022-12-04
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号