SQLite-как вы объединяете таблицы из разных баз данных?
У меня есть приложение, которое использует базу данных SQLite и все работает как надо. Я сейчас в процессе добавления новых функций, которые требуют второй базы данных SQLite, но мне трудно понять, как объединить таблицы из разных баз данных.
Если кто-то может помочь мне с этим, я действительно ценю это!
Edit: посмотреть этот вопрос например, вы можете адаптироваться к своему языку, когда вы подключаете базы данных, как указано в принятом ответе.
3 ответов:
если прикрепить и активирован в вашей сборке Sqlite (он должен быть в большинство сборки), вы можете прикрепить другой файл базы данных к текущему соединению с помощью прикрепить ключевое слово. Элемент ограничение на количество БД, которые могут быть прикреплены - это настройка времени компиляции (SQLITE_MAX_ATTACHED), в настоящее время по умолчанию 10, но это тоже может варьироваться в зависимости от сборки у вас. Глобальный лимит 125.
attach 'database1.db' as db1; attach 'database2.db' as db2;вы можете увидеть все подключенные базы данных с ключевым словом
.databasesзатем вы должны быть в состоянии сделать следующее.
select * from db1.SomeTable a inner join db2.SomeTable b on b.SomeColumn = a.SomeColumn;обратите внимание, что " [t]он имена баз данных
mainиtempзарезервированы для базы данных-источника и базы данных для хранения временных таблиц и других временных объектов данных. Оба этих имени базы данных существуют для каждого подключения к базе данных и не должны использоваться для вложения".
Ну, у меня нет большого опыта работы с SQLite, вам нужно получить доступ к обеим базам данных в одном запросе.
вы можете иметь что-то вроде :
select name from DB1.table1 as a join DB2.table2 as b where a.age = b.age;в базах данных, таких как SQLServer, вы можете получить доступ к другим базам данных таким иерархическим образом, это также должно работать для SQLite.
Я думаю, что вы можете инициировать экземпляр sqlite с более чем 1 базами данных !
вот пример C#, чтобы завершить этот вопрос
/// <summary> /// attachSQL = attach 'C:\WOI\Daily SQL\Attak.sqlite' as db1 */ /// path = "Path of the sqlite database file /// sqlQuery = @"Select A.SNo,A.MsgDate,A.ErrName,B.SNo as BSNo,B.Err as ErrAtB from Table1 as A /// inner join db1.Labamba as B on /// A.ErrName = B.Err"; /// </summary> /// <param name="attachSQL"></param> /// <param name="sqlQuery"></param> public static DataTable GetDataTableFrom2DBFiles(string attachSQL, string sqlQuery) { try { string conArtistName = "data source=" + path + ";"; using (SQLiteConnection singleConnectionFor2DBFiles = new SQLiteConnection(conArtistName)) { singleConnectionFor2DBFiles.Open(); using (SQLiteCommand AttachCommand = new SQLiteCommand(attachSQL, singleConnectionFor2DBFiles)) { AttachCommand.ExecuteNonQuery(); using (SQLiteCommand SelectQueryCommand = new SQLiteCommand(sqlQuery, singleConnectionFor2DBFiles)) { using (DataTable dt = new DataTable()) { using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(SelectQueryCommand)) { adapter.AcceptChangesDuringFill = true; adapter.Fill(dt); return dt; } } } } } } catch (Exception ex) { MessageBox.Show("Use Process Exception method An error occurred"); return null; } }
Comments