c# - 如何检查文件是否是 C# 中的 SQLite 数据库?

标签 c# sqlite

SQLiteConnection.Open 在打开非数据库文件时不会抛出异常。

private void openDatabase()
{
    sqlite = new SQLiteConnection("Data Source=" + this.filePath + ";Version=3;");

    try
    {
        sqlite.Open();
    }
    catch(SQLiteException e)
    {
        MessageBox.Show(e.Message + e.StackTrace);
    }
}

如何确定文件是否为 SQLite 数据库?

最佳答案

读取前 16 个字节,然后检查字符串“SQLite Format”

VB.Net

    Dim bytes(16) As Byte
    Using fs As New IO.FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
        fs.Read(bytes, 0, 16)
    End Using
    Dim chkStr As String = System.Text.ASCIIEncoding.ASCII.GetString(bytes)
    Return chkStr.Contains("SQLite format")

更新 2

C#

    byte[] bytes = new byte[17];
    using (IO.FileStream fs = new IO.FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
    fs.Read(bytes, 0, 16);
    }
    string chkStr = System.Text.ASCIIEncoding.ASCII.GetString(bytes);
    return chkStr.Contains("SQLite format");

关于c# - 如何检查文件是否是 C# 中的 SQLite 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38519688/

相关文章:

c# - TeamCity - 无法通过 API 进行身份验证

c# - Convert.ToDecimal(double x) - System.OverflowException

c# - .NET 控制台的窗口系统

c# - 当没有字段名称时反序列化json字符串。在c#中

java - 如何从列表转换为数组?安卓

sql - 将选择转换为更新

php - 如何从WebSql数据库以及服务器数据库中删除记录

c# - 将文件重定向到流 C#

java - 从外部循环中获取值在内部循环中接收

android - 如何在 android 上将 WHERE 子句添加到查询