如何把空字符转换为数字??

问题描述

数据库为Oracle,表为Pipe,其中有一字段为PIPE_LENGTH(number类型)代码如下:Models.PIPENET_STATICmypipe=newModels.PIPENET_STATIC();mypipe.PIPE_LENGTH=Convert.ToInt32(txtPipeLength.Text.Trim());说明:如果txtPipeLength输入数字,比如5则不报错!如果不输入,或者输入为5.3则报错,大致意思是“输入字符串的格式不正确。”请问我改如何写代码?要求:1、可以不输入;2、可以输入小数点的数字说明我这样写mypipe.PIPE_LENGTH=Convert.ToDouble(TextBox1.Text.Trim());提示:错误无法将类型“double”隐式转换为“int?”。存在一个显式转换(是否缺少强制转换?)奇怪我数据库是number类型呀这个问题困扰我几天了拜托各位了

解决方案

解决方案二:
因为你的mypipe.PIPE_LENGTH是int型的
解决方案三:
数据库中PIPE_LENGTH字段为number类型
解决方案四:
mypipe.PIPE_LENGTH=Convert.ToInt32(Convert.ToDouble(txtPipeLength.Text.Trim()));

上面是不会报错的,只不过都转换成int了。
解决方案五:
publicintGetInt32(stringstr){intres=0;try{res=Convert.ToInt32(str.Trim());}catch{res=0;}returnres;}

解决方案六:
number类型你设置精度多少?number(10)?number(10,2)?等等
解决方案七:
mypipe.PIPE_LENGTH=txtPipeLength.Text.Trim()==""?0:double.Parse(txtPipeLength.Text.Trim());这里的PIPE_LENGTH的类型要是double不是你数据库字段的类型,而是Models.PIPENET_STATIC类中PIPE_LENGTH属性的类型
解决方案八:
支持楼上。类型有问题
解决方案九:
用小数的数据类型吧
解决方案十:
数据库表里的字段PIPE_LENGTH指定精度看看,例如number(10,2)
解决方案十一:
Models.PIPENET_STATICmypipe=newModels.PIPENET_STATIC();doublenum=0;double.TryParse(txtPipeLength.Text.Trim());,outnum):mypipe.PIPE_LENGTH=num;
解决方案十二:
不知道楼主非要把空字符串转成数字干什么用?如果非要那样则可以做一下判断即可stringstr=txtPipeLength.Text.Trim();if(!string.IsNullOrEmpty(str)){intresult=0;if(int.TryParse(str,outresult))//整数{mypipe.PIPE_LENGTH=Int32.Parse(str);}}

解决方案十三:
double类型的问题解决了是我models层定义有问题现在的问题是mypipe.PIPE_LENGTH=txtPipeLength.Text.Trim()==""?Convert.ToDouble(null):Convert.ToDouble(TextBox1.Text.Trim());当txtPipeLength不输入值时候我就希望给mypipe.PIPE_LENGTH为空值,但上面的语句结果是当不输入时则为0,如果为0则在数据操作时候就把0插入表中了这个合乎要求的。但如下这样写:mypipe.PIPE_LENGTH=txtPipeLength.Text.Trim()==""?null:Convert.ToDouble(TextBox1.Text.Trim());则报错“无法确定条件表达式的类型,因为“<null>”和“double”之间没有隐式转换”请问如何操作呢?
解决方案十四:
回复中很多都是当字符串为空时就把0赋值给mypipe.PIPE_LENGTH,那就意味着写入数据库的是0,而我其实不想写入0就希望数据库中该字段为空就行
解决方案十五:
那就要看你这个字段是如何定义的了,在PIPE_LENGTH点击右键选择“转到定义”,看看这个字段到底是怎么定义的,设置成可空类型int?PIPE_LENGTH;
解决方案:
你其实可以在做数据保存操作时进行判断,如果是最小或最大值则赋DBNull.Value就好了前面就这样改好了:mypipe.PIPE_LENGTH=txtPipeLength.Text.Trim()==""?double.MinValue:Convert.ToDouble(TextBox1.Text.Trim());
解决方案:
引用12楼whysoso2008的回复:

double类型的问题解决了是我models层定义有问题现在的问题是mypipe.PIPE_LENGTH=txtPipeLength.Text.Trim()==""?Convert.ToDouble(null):Convert.ToDouble(TextBox1.Text.Trim());当txtPipeLength不输入值时候我就希望给mypipe.P……

值类型是不能为null的就算能为null你想把数据库字段写成null也不能传递null,而是要在数据库的更新语句中写成字符串“null”或者在存储过程中使用其数据库相应的null类型

时间: 2016-04-26

如何把空字符转换为数字??的相关文章

Excel2010怎么将文本转换为数字?

  很多人都发现了,在导入别的数据后,Excel 2010 可能会把某些数字识别为文本.这将导致某些函数(如 SUM 和 AVERAGE)忽略这些单元格中的数值.除了要转换的数字外,这些文本串还可能包含真正的文本字符.那么Excel2010怎么将文本转换为数字?要将工作表中的文本转换为数字,可以使用本文中介绍的任一方法. Excel2010 注意 每一方法均假定您已将单元格中的任何单元格数字格式更改为"常规".为此,请按照下列步骤操作: 1.在"格式"菜单上,单击&

excel将文本转换为数字的四种方法

  excel将文本转换为数字的四种方法          方法一,利用函数查错工具,如果数字是文本格式的,在左上角会有一个小三角的东西,点击单元格,选中有个惊叹号样子的小方格,选择"转换为数字"完成批量转换 方法二,四则运算,就是将文本型数字进行加减乘除的运算,比如对C2进行转换,就写公式=C2*1,就可以将文本转成数值了 方法三,进行"减负运算",它其实也就是四则运算,只是写法有些不一样,比如对C2进行转换,就写公式=--C2,通过计算,就可以将文本型数字转换成

Excel中将文本转换为数字的四种方法

当导入在另一程序(如 dBASE 或 Lotus 1-2-3)中创建的文件或导入从大型机下载的文件时,Excel 2003 可能会将其中的某些数字识别为文本. 这将导致某些函数(如 SUM 和 AVERAGE)忽略这些单元格中的数值.除了要转换的数字外,这些文本串还可能包含真正的文本字符.那么如何将文本转换为数字? 要将工作表中的文本转换为数字,可以使用本文中介绍的任一方法(方法 1 至 7). 注意 每一方法均假定您已将单元格中的任何单元格数字格式更改为"常规".为此,请按照下列步骤

Excel将文本转换为数字的4种方法

      当导入在另一程序(如 dBASE 或 Lotus 1-2-3)中创建的文件或导入从大型机下载的文件时,Excel 2003 可能会将其中的某些数字识别为文本.这将导致某些函数(如 SUM 和 AVERAGE)忽略这些单元格中的数值.除了要转换的数字外,这些文本串还可能包含真正的文本字符.那么如何将文本转换为数字?   要将工作表中的文本转换为数字,可以使用本文中介绍的任一方法. 注意 每一方法均假定您已将单元格中的任何单元格数字格式更改为"常规".为此,请按照下列步骤操作:

Lua判断变量是否为数字、字符串是否可以转换为数字等

  这篇文章主要介绍了Lua判断变量是否为数字.字符串是否可以转换为数字等,本文讲解了Lua 判断是字符还是数字的方法.Lua判断数字的方法.判断可否转换为数字的方法.判断并且准备一个初值的方法,需要的朋友可以参考下 一.Lua 判断是字符还是数字 代码如下: -- 如果待判断的是一个变量 local t = type(x); if t == "number" then -- 是数字 else if t == "string" then -- 是字符串 end --

从键盘输入一个字符如(“12345”只有0-9)用递归算法将字符串转换为数字,

问题描述 从键盘输入一个字符如("12345"只有0-9)用递归算法将字符串转换为数字, 完整题目:从键盘输入一个字符如("12345"只有0-9)用递归算法将字符串转换为数字,求算法复杂性,并验证排序正确性 解决方案 不好意思,之前发的那个没验证发现有点问题,误导了,这个验证了一下没问题.你的题目总没有说明翻译成几进制,所以我就按原样翻译了 例如字符"1234",翻译为数字1234. void GetNumFromString(char *c,

字符串如何转换为数字

问题描述 有道字符串转换为数字的题目(在不使用强制类型转换的情况下)看了下提示:为什么char字符通过减去字符零('0')变成数字???不解 解决方案 解决方案二:asic解决方案三:C语言教程一般都有:'0':48'a':97'A':65......'0'表示整数48.但以上只限于0~255,但已经包括了键盘上绝大多数字符了.解决方案四://为什么char字符通过减去字符零('0')变成数字因为字符实际存储的是编码,而编码是按顺序排列的,'0'.'1'.'2''2'的编码比'0'的编码大2,'

C语言中一些将字符串转换为数字的函数小结_C 语言

C语言atoi()函数:将字符串转换成int(整数)头文件: #include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); [函数说明]atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回. [返回值]返回转换后的整

VB.NET (VS2003)开发WINCE应用程序无法将文本框内容转换为数字类型 ,wince4.2

问题描述 1.Ptsgcs=Val(Me.ptsgc.Text)2.Ptsgcs=Val(Me.ptsgc.Text.ToString)3.Ptsgcs=Val(CDbl(Me.ptsgc.Text.ToString))其中,ptsgcs为模块中定义的公共变量double类型me.ptsgc为textbox文本框以上三种处理方式在wince4.2下运行出错,请高手指点,谢谢! 解决方案 解决方案二:在wince下提示:Typeloadexception无法从程序集microsoft.visual