Bri*_*eon 116
如果连网被激活你的SQLite版本(应该是在大多数版本),你可以使用附加其他数据库文件移动到当前连接ATTACH关键字.该上可以附加分贝的数量限制是编译时间设置(SQLITE_MAX_ATTACHED),目前默认为10,但是这也可以通过你的生成变化.全球限制为125.
attach 'database1.db' as db1;
attach 'database2.db' as db2;
Run Code Online (Sandbox Code Playgroud)
您可以使用关键字查看所有连接的数据库
.databases
Run Code Online (Sandbox Code Playgroud)
然后你应该能够做到以下几点.
select
*
from
db1.SomeTable a
inner join
db2.SomeTable b on b.SomeColumn = a.SomeColumn;
Run Code Online (Sandbox Code Playgroud)
请注意,"[t]把数据库名main
,并temp
保留主数据库和数据库来保存临时表和其它临时数据对象.这两个数据库的名称存在每个数据库连接,并且不应该用于连接".
这是完成此问题的 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;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
60078 次 |
最近记录: |