如何将二进制文件保存到数据库

时间:2011-01-10 22:54:43

标签: database vb.net

加入日期:12月10日 帖子:10 此时caba11是未知数量(< 10)

如何将二进制文件保存到数据库 喜。 我需要将文件保存到数据库中...... 我无法找到它为什么不起作用......

这是我的代码:

Public Sub importfiles(ByVal sFileName As String)

    Dim cnSQL As SqlConnection
    Dim cmSQL As SqlCommand
    Dim strSQL

    'Validate form values

    'Read file into a stream
    Dim fs As New FileStream(sFileName, FileMode.Open, FileAccess.Read)
    Dim myData(fs.Length) As Byte
    fs.Read(myData, 0, fs.Length)
    fs.Close()

    Try

        'Build  SQL
        strSQL = "insert into data_cesta(ID, cesta) values (@ID, @cesta)"

        cnSQL = New SqlConnection("Data Source=.;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")
        cmSQL = New SqlCommand(strSQL, cnSQL)

    cmSQL.Parameters.Add(New SqlParameter("@ID", SqlDbType.Int)).Value = ID
    cmSQL.Parameters.Add(New SqlParameter("@cesta", SqlDbType.NText)).Value = myData
    '  cmd2.Parameters.Add("@ID", SqlDbType.Int).Value = ID
    ' cmd2.Parameters.Add("@cesta", SqlDbType.NText).Value = myData


    'Open connection and execute the command
    cnSQL.Open()
    cmSQL.ExecuteNonQuery()

    'Close and clean up objects
    cnSQL.Close()
    cmSQL.Dispose()
    cnSQL.Dispose()

    Catch ex As SqlException
    MsgBox(ex.Message, MsgBoxStyle.Critical, "SQL Error")
    Catch ex As Exception
    MsgBox(ex.Message, MsgBoxStyle.Critical, "General Error")
    End Try

End Sub

没有尝试它说“cmSQL.ExecuteNonQuery()” - “无法将参数值从DataGridViewTextBoxColumn转换为Int32。”

1 个答案:

答案 0 :(得分:0)

看起来好像是在将一些文件路径加载到数据库之前将它们加载到DataGrid中。

默认情况下,您的ID字段将作为DataGrid中的DataGridViewTextBoxColumn对象传递给过程。您需要检索该对象中的文本。

您可以通过访问正在处理的行上的关联DataGridViewTextBoxCell对象来执行此操作。在DataGridViewTextBoxCell对象中有一个名为“Value”的属性,它将具有您需要的ID值。

如果没有看到更多代码,很难为您提供确切的代码,但请查看DataGridViewCell object以获取一些有用的代码,因为TextBoxCell继承自此类。