2011-01-10 78 views
0

注册日期: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。”

回答

0

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

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

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

没有看到更多的代码,很难给你确切的代码,但检查DataGridViewCell object的一些有用的代码,因为TextBoxCell继承自这个类。

+0

我正在尝试这个,但仍然是相同的错误.... http://www.aspsnippets.com/Articles/Save-and-Retrieve-Files-from-SQL-Server-Database-using-ASP.Net.aspx – caba11 2011-01-11 12:06:44

相关问题