Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SQL Server表的5个不同列中插入5个上载的文件_Sql Server_Vb.net - Fatal编程技术网

Sql server 如何在SQL Server表的5个不同列中插入5个上载的文件

Sql server 如何在SQL Server表的5个不同列中插入5个上载的文件,sql-server,vb.net,Sql Server,Vb.net,我想获取用户输入的5个图像,并将其保存到SQL Server表的5个不同列中(userID(UserInfo表中的外键)、image1、image2、image3、image4、image5) 有人能告诉我这方面的代码吗?下面是输入5幅图像的代码 Private Sub BrowseMultipleFilesButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Br

我想获取用户输入的5个图像,并将其保存到SQL Server表的5个不同列中(userID(UserInfo表中的外键)、image1、image2、image3、image4、image5)

有人能告诉我这方面的代码吗?下面是输入5幅图像的代码

Private Sub BrowseMultipleFilesButton_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles BrowseMultipleFilesButton.Click
    Dim OpenFileDialog1 As New OpenFileDialog
    OpenFileDialog1.Filter =
     "Images (*.BMP;*.JPG;*.GIF,*.PNG,*.TIFF)|*.BMP;*.JPG;*.GIF;*.PNG;*.TIFF|" +
     "All files (*.*)|*.*"

    OpenFileDialog1.Multiselect = True
    Dim index As New Integer

    OpenFileDialog1.Title = "Select Photos"

    If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
        If OpenFileDialog1.FileNames.Length > 5 Then
            MessageBox.Show("Please select no more than 5 files")
            Exit Sub
        End If
        If OpenFileDialog1.FileNames.Length < 5 Then
            MessageBox.Show("Please select 5 files")
            Exit Sub
        End If
        For Each file As String In OpenFileDialog1.FileNames
            Dim imageControl As New PictureBox()
            imageControl.Height = 100
            imageControl.Width = 100
            Dim myCallback As New Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)
            Dim myBitmap As New Bitmap(file)
            Dim myThumbnail As Image = myBitmap.GetThumbnailImage(96, 96, myCallback, IntPtr.Zero)
            imageControl.Image = myThumbnail

            PhotoGallary.Controls.Add(imageControl)
            index = OpenFileDialog1.FilterIndex()
        Next
        btn_Save.Enabled = True
        BrowseMultipleFilesButton.Enabled = False

    End If
End Sub
Private子浏览器multiplefiles按钮\u单击(以System.Object的形式显示发件人)_
ByVal e As System.EventArgs)处理浏览多个文件按钮。单击
将OpenFileDialog1变暗为新OpenFileDialog
OpenFileDialog1.Filter=
“图像(*.BMP;*.JPG;*.GIF,*.PNG,*.TIFF)|*.BMP;*.JPG;*.GIF;*.PNG;*.TIFF |”+
“所有文件(*.*)|*.*”
OpenFileDialog1.Multiselect=True
将索引设置为新整数
OpenFileDialog1.Title=“选择照片”
如果OpenFileDialog1.ShowDialog()=DialogResult.OK,则
如果OpenFileDialog1.FileNames.Length>5,则
MessageBox.Show(“请选择不超过5个文件”)
出口接头
如果结束
如果OpenFileDialog1.FileNames.Length<5,则
MessageBox.Show(“请选择5个文件”)
出口接头
如果结束
在OpenFileDialog1.FileNames中将每个文件作为字符串
Dim imageControl作为新的PictureBox()
图像控制。高度=100
图像控制。宽度=100
Dim myCallback作为新映像。GetThumbnailImageAbort(ThumbnailCallback的地址)
将myBitmap变暗为新位图(文件)
Dim myThumbnail As Image=myBitmap.GetThumbnailImage(96,96,myCallback,IntPtr.Zero)
imageControl.Image=myThumbnail
PhotoGallary.Controls.Add(图像控件)
index=OpenFileDialog1.FilterIndex()
下一个
btn_Save.Enabled=真
BrowseMultipleFilesButton.Enabled=False
如果结束
端接头

如果您确实需要将图像保存到数据库中,可以使用bulkcolumn from open rowset语句 问题是:

Insert Into MyTable(userID, image1, image2, image3, image4, image5)
   Select @user_id, BulkColumn 
   from Openrowset (Bulk @image1path, Single_Blob) as image1,
BulkColumn 
   from Openrowset (Bulk @image2path, Single_Blob) as image2,
BulkColumn 
   from Openrowset (Bulk @image3path, Single_Blob) as image3,
BulkColumn 
   from Openrowset (Bulk @image4path, Single_Blob) as image4
BulkColumn 
   from Openrowset (Bulk @image5path, Single_Blob) as image5;
请记住,动态创建查询时使用@user_id是从UserInfo表中获得的id,@imageXpath始终是用户系统上的文件路径,格式为“directory/directory/./filename.ext”,并用单引号括起来

您将在foreach语句之后动态地创建和执行此查询(如果文件较少,则不需要全部5次插入,因此插入mytable(fieldname,…)的字段较少,列语句也较少

来源=

重要提示:

OPENROWSET权限由用户的权限决定 正在传递给OLE DB提供程序的名称。若要使用大容量 选项需要“管理批量操作”权限


如果您没有正确设置这些权限,请找到另一种存储图像的方法,并将图像的文件路径保存到数据库中的varchar列中

我真的不知道您在哪里执行查询您可以将每个图像的路径添加到数组中,然后决定数组的大小并动态更改您的设置r sql将每个图像路径分别插入到正确的字段中,但我真的不知道您使用的是什么编程语言,我猜是visual basic,但我不确定我是在问,我应该在哪里执行查询?是的,我使用的是VB.NET。您将文件上载到哪里?让我再次强调,我建议不要这样做,因为您现在是sta将大量数据放入一个表中可能会降低性能。您还需要设置数据库以处理此类数据