使用 VB 在 SQLite 中处理图像

使用 VB 在 SQLite 中处理图像,我们将使用图像文件。 请注意,有些人反对将图像放入数据库。 在这里,我们只展示如何做。 我们不讨论天气技术问题是否将图像保存在数据库中。

sqlite> CREATE TABLE Images(Id INTEGER PRIMARY KEY, Data BLOB);
Visual Basic

对于此示例,我们创建一个名为Images的新表。 对于图像,我们使用BLOB数据类型,代表二进制大对象。

插入图像

在第一个示例中,我们将图像插入 SQLite 数据库。

Option Strict On

Imports System.IO
Imports System.Data
Imports Mono.Data.Sqlite

Module Example

    Sub Main()

        Dim cs As String = "URI=file:test.db"

        Using con As New SqliteConnection(cs)

            con.Open()

            Dim data As Byte()

            Try
                data = File.ReadAllBytes("woman.jpg")
            Catch ex As Exception
                Console.WriteLine(ex.ToString())
            End Try

            Dim cmd As New SqliteCommand(con)

            cmd.CommandText = "INSERT INTO Images(Data) VALUES (@img)"
            cmd.Prepare()

            cmd.Parameters.Add("@img", DbType.Binary, data.Length)
            cmd.Parameters("@img").Value = data
            cmd.ExecuteNonQuery()

            con.Close()

        End Using

    End Sub

End Module
Visual Basic

我们从当前工作目录中读取图像,并将其写入 SQLite test.db数据库的Images表中。

Dim data As Byte()
Visual Basic

图像数据将存储在字节数组中。

data = File.ReadAllBytes("woman.jpg")
Visual Basic

ReadAllBytes()方法打开一个二进制文件,将文件的内容读取到字节数组中,然后关闭该文件。

cmd.CommandText = "INSERT INTO Images(Data) VALUES (@img)"
cmd.Prepare()
Visual Basic

我们准备一条 SQL 语句,用于将字节数组插入Images表的Data列中。

cmd.Parameters.Add("@img", DbType.Binary, data.Length)
cmd.Parameters("@img").Value = data
cmd.ExecuteNonQuery()
Visual Basic

我们将二进制数据绑定到预备语句。 然后执行该语句。 该图像被写入数据库表。

读取图像

在本节中,我们将执行相反的操作。 我们将从数据库表中读取图像。

Option Strict On

Imports System.IO
Imports System.Data
Imports Mono.Data.Sqlite

Module Example

    Sub Main()

        Dim cs As String = "URI=file:test.db"

        Using con As New SqliteConnection(cs)

            con.Open()

            Dim cmd As New SqliteCommand(con)
            cmd.CommandText = "SELECT Data FROM Images WHERE Id=1"

            Dim data As Byte() = cmd.ExecuteScalar()

            Try                           
                If data IsNot Nothing
                    File.WriteAllBytes("woman2.jpg", data)
                Else 
                    Console.WriteLine("Binary data not read")
                End If

            Catch ex As Exception            
                Console.WriteLine(ex.ToString())
            End Try    

            con.Close()

        End Using

    End Sub

End Module
Visual Basic

我们从Images表中读取图像数据,并将其写入另一个文件woman2.jpg中。

cmd.CommandText = "SELECT Data FROM Images WHERE Id=1"
Visual Basic

该行从表中选择图像数据。

Dim data As Byte() = cmd.ExecuteScalar()
Visual Basic

我们从数据库表中检索二进制数据。 数据存储在字节数组中。

If data IsNot Nothing
    File.WriteAllBytes("woman2.jpg", data)
Else 
    Console.WriteLine("Binary data not read")
End If
Visual Basic

WriteAllBytes()方法创建一个新文件,将指定的字节数组写入该文件,然后关闭该文件。 如果目标文件已经存在,则将其覆盖。 当数据库表为空并运行此示例时,我们得到Nothing。 因此,我们检查Nothing值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册