为什么提示这个错误?异常详细信息: System.Data.SqlClient.SqlException: 将截断字符串或二进制数据。

[复制链接]
查看11 | 回复1 | 2010-6-25 19:33:37 | 显示全部楼层 |阅读模式
目的是实现向数据库中插入记录 里面包括上传图片的各种信息(如:长度,字节数,名字,内容)和留言人姓名和留言内容
aspx.vb中的代码:
Sub Enter_Click(ByVal sender As Object, ByVal e As EventArgs)

If uploadfile.PostedFile.FileName"" Then

'第一步:获取上传的文件的各种信息,以备后面使用***********************

'下面变量分别表示文件的名称,文件MIME类型,和文件说明和文件大小

Dim filename, fileContentType As String

Dim filesize As Long

'Path.GetFileName方法可以从任何一个路径字符串中获取文件名称

filename = Path.GetFileName(uploadfile.PostedFile.FileName)

filesize = uploadfile.PostedFile.ContentLength

fileContentType = uploadfile.PostedFile.ContentType

'第二步:利用Stream对象将上传的文件保存到二进制数组中*******************

Dim buffer(filesize) As Byte
'建立一个和文件大小一致的二进制数组


Dim objStream As Stream
'定义一个Stream对象变量

objStream = uploadfile.PostedFile.InputStream
'读取上传文件到Stream对象中

objStream.Read(buffer, 0, filesize)
'读取整个文件到buffer数租中

'第三步:将二进制数组中的数据保存到数据库中********************************

Dim conn As New SqlConnection("Data Source=CHINA-E4B18D593\SQLEXPRESS;Initial Catalog=class;Integrated Security=True")

Dim cmd As New SqlCommand("Insert Into class_declaration(filename,filesize,filebody,filecontenttype,submit_date,name,body) Values(@filename,@filesize,@filebody,@fileContentType,@Submit_Date,@name,@body)", conn)

'给参数赋值

cmd.Parameters.Add(New SqlParameter("@filename", SqlDbType.Char, 50))

cmd.Parameters("@filename").Value = filename

cmd.Parameters.Add(New SqlParameter("@filesize", SqlDbType.Int))

cmd.Parameters("@filesize").Value = filesize

cmd.Parameters.Add(New SqlParameter("@filebody", SqlDbType.Binary))

cmd.Parameters("@filebody").Value = buffer
'这里是保存文件内容的二进制数组

cmd.Parameters.Add(New SqlParameter("@fileContentType", SqlDbType.Char, 250))

cmd.Parameters("@fileContentType").Value = fileContentType

cmd.Parameters.Add(New SqlParameter("@submit_date", SqlDbType.DateTime))

cmd.Parameters("@submit_date").Value = Now()

cmd.Parameters.Add(New SqlParameter("@name", SqlDbType.Char))

cmd.Parameters("@name").Value = name.Value

cmd.Parameters.Add(New SqlParameter("@body", SqlDbType.Text))

cmd.Parameters("@body").Value = "0"

'执行操作,插入记录

conn.open()

cmd.ExecuteNonQuery()

conn.close()

End If

End Sub
aspx中的控件有:input:filetextboxtextarea 这三个类型的html控件

回复

使用道具 举报

千问 | 2010-6-25 19:33:37 | 显示全部楼层
超长了检查下表字段长度检查一下没指定长度的几个参数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行