当前位置:编程学习 > C#/ASP.NET >>

为什么向数据库中添加的数据不全

以下是向数据库中添加数据的方法,但是在向数据库中添加数据时,“url”的值明明是“~/Uploads/Images/warning.gif”,但是添加到数据库中却成了“~/Uploads/Images/warning.”。这是什么原因啊?实在不解?

数据库中该字段“PicUrl”的类型是“nvarchar(30)”。


string title = Title_Warning.Text;
            DateTime datetime = Convert.ToDateTime(Time_Warning.DateString);
            string url = "~/Uploads/Images/" + TextBox_ImgUrl.Text;
            string cont = Cont_Warning.Value;

BLL_Warning warning = new BLL_Warning();
            Model_Warning model = new Model_Warning();
            model.Title = title;
            model.Time = datetime;
            model.PicUrl = url;
            model.Cont = cont;

            if (warning.warning_add(model))
            {
                helper.MsgBox("添加成功!");
            }
--------------------编程问答-------------------- 数据库中该字段“PicUrl”的类型是“nvarchar(30)”。


你把这个变为200在试试 --------------------编程问答-------------------- nvarchar(30) 明显长度不够啊, 设置nvarchar(100)或者更大 --------------------编程问答-------------------- 你调试看一下,url最后的值是什么,
如果在string url = "~/Uploads/Images/" + TextBox_ImgUrl.Text;这一句获得的是 ~/Uploads/Images/warning.  那么问题就显而易见了
如果不是,就把数据库里的数据类型给改大一些 --------------------编程问答-------------------- 设成nvarchar(100)再试试。
--------------------编程问答-------------------- nvarchar(500) --------------------编程问答--------------------
引用 5 楼 wxr0323 的回复:
nvarchar(500)


nvarchar不是长度可变的吗?怎么会长度不够??? --------------------编程问答-------------------- 就是可变的啊
nvarchar的长度是在1到4000之间

varchar 是1-8000


可变的你也要赋值。。你想想 nvarchar(5) 和nvarchar(10)能一样吗? --------------------编程问答--------------------
引用 6 楼 kahou_007 的回复:
引用 5 楼 wxr0323 的回复:

nvarchar(500)


nvarchar不是长度可变的吗?怎么会长度不够???

你的理解完全错误

nvarchar(n):  
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。 

varchar[(n)]:  
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。

char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。 

varchar是变长型,它的存储空间会跟你输入的实际字符数而改变,但最大长度不能超过你指定的长度。

好好理解一下 --------------------编程问答-------------------- nvarchar是unicode的变长型,它和char的区别很明显了,它和varchar的区别主要是存储空间大,相同长度下能容内更多的字符。 


可变是在定义的范围内可变  不是你随便定义一个数  在1和最大数之间可变,否则你定义30  还有啥用?? --------------------编程问答--------------------
引用 9 楼 wyq29 的回复:
nvarchar是unicode的变长型,它和char的区别很明显了,它和varchar的区别主要是存储空间大,相同长度下能容内更多的字符。 


可变是在定义的范围内可变  不是你随便定义一个数  在1和最大数之间可变,否则你定义30  还有啥用??


哦,明白了、。。。 --------------------编程问答-------------------- nvarchar(30) 长度不够 把30改成大点的数 --------------------编程问答-------------------- 解决了啊  --------------------编程问答-------------------- 长度不够 啊 --------------------编程问答-------------------- 设为4000就行了 --------------------编程问答--------------------
引用 14 楼 geng_geng 的回复:
设为4000就行了


它是一个图片的路径:......../images/..../warning.gif,只有"gif"这三个字符不能存入数据库中。
改为“200”还是不行啊? --------------------编程问答-------------------- 比调试下 看sql或者参数 到底是什么 --------------------编程问答-------------------- 看看你string类型接收的值是什么样的。 --------------------编程问答--------------------
引用 16 楼 jin225 的回复:
比调试下 看sql或者参数 到底是什么


引用 17 楼 kevin87923 的回复:
看看你string类型接收的值是什么样的。


好的。。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,