标题:[求助]想写一个VB.NET+SQL的winform上传软件,不知道怎么写,谁能帮帮我?
只看楼主
weichch123
Rank: 1
来 自:中华人民共和国
等 级:新手上路
帖 子:16
专家分:0
注 册:2009-5-20
得分:0 
改了 还是不行 我想知道怎么打开上传到SQL里面的word文件?
2010-04-23 22:24
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:0 
程序代码:
Imports System
Imports System.Drawing
Imports System.Collections
Imports Imports System.Windows.Forms
Imports System.Data
Imports System.Drawing.Imaging
Imports Imports System.Data.SqlClient

Public Class Form1
    Private fs As FileStream
    Private ds As DataSet
    Private conn As New SqlConnection("SQLSERVER连接字符串,楼主自已写吧,注意在服务器中使用名为ceshi的数据库")
    Private currentpos As Integer = 9

    Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
        Dim Opendlg As New OpenFileDialog
        Opendlg.Title = "Select a picture file"
        Opendlg.Filter = "(*.doc)|*doc|(*.jpg)|*.jpg|全部文件|*.*"
        Opendlg.ShowDialog()
        lblPath.Text = Opendlg.FileName.ToString()
        fs = New FileStream(Opendlg.FileName.ToString(), IO.FileMode.Open, IO.FileAccess.Read)
    End Sub

    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        '读入文件数据  
        Dim imgData(fs.Length - 1) As Byte
        fs.Read(imgData, 0, fs.Length - 1)
        fs.Close()

        Dim tempAdapter As SqlDataAdapter
        Dim tempDataset As New DataSet
        '打开数据库连接  
        conn.Open()
        '创建一个临时表用于存储上传的数据
        Dim sqlcmd As New SqlCommand
        sqlcmd.Connection = conn
         = "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tmpFile]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[tmpFile]"
        sqlcmd.ExecuteNonQuery()
         = "CREATE TABLE [tmpFile] ([id] [int] IDENTITY (1, 1) NOT NULL ,[photo] [Image] NULL) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]"
        sqlcmd.ExecuteNonQuery()

        tempAdapter = New SqlDataAdapter("SELECT   *   FROM   tmpFile   WHERE   1=0", conn)
        Dim cb As New SqlCommandBuilder(tempAdapter)
        tempAdapter.Fill(tempDataset)
        '插入一条记录  
        Dim tempDataRow As DataRow
        tempDataRow = tempDataset.Tables(0).NewRow()
        tempDataRow("photo") = imgData
        tempDataset.Tables(0).Rows.Add(tempDataRow)
        tempAdapter.Update(tempDataset)
        '数据上传结束

        Windows.Forms.Application.DoEvents()

        '下面的代码将上传的数据以文件形式存入SQLSERVER服务器的磁盘中
        '下面的代码需要在窗体中画四个文本框:
        'txtServer——服务器名称,txtUserName——登录用户名,——登录密码,txtDestFileName——需要保存到服务器的完整路径及文件名
        '调用服务器端textcopy.exe,将上传的数据以文件形式存入SQLSERVER服务器的磁盘中
        Dim strExec As String
        strExec = "textcopy /S " & Chr(34) & txtServer.Text & Chr(34)
        strExec = strExec & " /U " & Chr(34) & txtUserName.Text & Chr(34)
        strExec = strExec & " /P " & Chr(34) & txtPassword.Text & Chr(34)
        strExec = strExec & " /D ceshi"'ceshi为数据库名
        strExec = strExec & " /T tmpFile"'tmpFile为创建的临时表
        strExec = strExec & " /C photo"'photo为创建的临时表tmpFile中的image字段
        strExec = strExec & " /F " & txtDestFileName.Text
        strExec = strExec & " /W " & Chr(34) & "where id=1" & Chr(34)
        strExec = strExec & " /O"
         = "exec master.dbo.xp_cmdshell '" & strExec & "'"
        sqlcmd.ExecuteNonQuery()
        Windows.Forms.Application.DoEvents()
        '释放对象
        sqlcmd.Dispose()
        tempAdapter.Dispose()
        tempDataset.Dispose()
        fs.Close()
        conn.Close()
        MsgBox("OK,数据上传完毕")
    End Sub

End Class

上面的代码用于SQLSERVER客户端将本地文件上传并保存到服务器端指定的文件夹

至于如何限定客户端上传文件的大小及如果在数据库中存入上传文件的路径的代码,楼主自已应当能够完成

楼主拿去研究吧,以上代码在VS2008+SQLSERVER2000中测试通过

楼主下一步要做的,就是多用户并发的问题(创建临时表)以及服务器中文件已经存在的问题。

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2010-04-25 10:01
w88854321
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-04 20:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-303533-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.491028 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved