| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5188 人关注过本帖
标题:[讨论]将截断字符串或二进制数据 语句已终止
只看楼主 加入收藏
huanying205
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
收藏
 问题点数:0 回复次数:21 
[讨论]将截断字符串或二进制数据 语句已终止

大家遇到过这个问题吗?我查了一下,说是要保存的字符串长度超出定义的长度,但我看我保存的字符串本来就很短,而且也定义到最大了,怎么还是这个问题?怎么回事?

搜索更多相关主题的帖子: 二进制 语句 字符 数据 截断 
2007-09-21 11:26
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 
能将代码贴出来看看吗?

------------------不为别的,就为你,我的理想!-----------------
2007-09-21 12:37
huanying205
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
收藏
得分:0 

FileStream fs = File.OpenRead(fullname);
byte[] content = new byte[fs.Length];
string temp = System.Text.Encoding.Default.GetString(content);
fs.Read(content, 0, content.Length);
fs.Close();

string connStr = "workstation id=localhost;Integrated Security=SSPI;database=djBook";
string insertCmd =
"Insert Into 图库(编号,名称,图片)Values(@编号,@名称,@图片)";

SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = new SqlCommand(insertCmd, conn);
cmd.Parameters.Add("@编号", SqlDbType.VarChar);
cmd.Parameters.Add("@名称", SqlDbType.VarChar);
cmd.Parameters.Add("@图片", SqlDbType.VarChar);
cmd.Parameters["@编号"].Value = strToolNum;
cmd.Parameters["@名称"].Value = strToolName;
cmd.Parameters["@图片"].Value = temp;
cmd.ExecuteNonQuery();
MessageBox.Show("图片成功保存!");

2007-09-21 12:48
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
加个try..catch..看一直,或者设个断点,看是在哪一句上出的错

另:cmd.Parameters.Add("@编号", SqlDbType.VarChar);这样的语句,最好能给它一个具体的长度

飘过~~
2007-09-21 12:53
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 
是不是这里cmd.Parameters["@图片"].Value = temp;有问题,
你把这两句的位置换一下看看:
//初始位置
string temp = System.Text.Encoding.Default.GetString(content);

fs.Read(content, 0, content.Length);
//换一下
fs.Read(content, 0, content.Length);
string temp = System.Text.Encoding.Default.GetString(content);

不行的话就按楼上说的单步调试一下看看到底哪里有问题.


------------------不为别的,就为你,我的理想!-----------------
2007-09-21 14:19
huanying205
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
收藏
得分:0 
cmd.ExecuteNonQuery();
问题出在这句,但是应该是上边语句的问题。换位置不行。
另外编号的具体长度在数据表中已经给了。
2007-09-21 14:54
chen85cong
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-9-20
收藏
得分:0 
cmd.Parameters.Add("@图片", SqlDbType.VarChar);
肯定是这句的问题,你给的是二进制数据,却用varchar表示,数据库中此字段给的不会也是varchar吧
2007-09-21 15:15
huanying205
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
收藏
得分:0 
对,数据表中图片的数据类型是varchar,应该怎么改呢?
2007-09-21 15:26
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 
就是,你数据库里存储图片的字段用的是什么类型的,如果是image类型的就直接这样写 cmd.Parameters["@图片"].Value = content;,如果是varchar类型的就将其长度设大点试试看.
我的建议还是坚持一步一步调试,并监视每个变量的值的变化,在命令窗口查看一下cmd.ExecuteNonQuery().或者捕捉一下异常.

------------------不为别的,就为你,我的理想!-----------------
2007-09-21 15:26
huanying205
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
收藏
得分:0 
如果图片的类型是image出现的异常是: 将参数值从Byte[]转换成String失败;
是varchar类型 长度我已经设到了1000,够大了吧,还是不行,语句已终止!
2007-09-21 15:41
快速回复:[讨论]将截断字符串或二进制数据 语句已终止
数据加载中...
 
   



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

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