数据库为Oracle,表为Pipe ,其中有一字段为 PIPE_LENGTH (number类型)代码如下:
Models.PIPENET_STATIC mypipe = new Models.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类型呀 这个问题困扰我几天了 拜托各位了
Models.PIPENET_STATIC mypipe = new Models.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类型呀 这个问题困扰我几天了 拜托各位了
解决方案 »
- 用C#开发分布式数据库应用winform程序用到的技术和知识点?
- 用C#开发QQ聊天窗口中,视频语音的一个功能
- 如何区分托管和非托管
- 请问如何实现PDF在线浏览,不能下载,打印(在页面上)?
- 请问原来的ASP 程序里的session 如何传给 ASP.NET!!求救!
- Socket 监听 问题 ,100分相送, 请智者帮助
- DataGridBoolColumn问题
- android如何调用WCF?
- c#.net对数据表操作的问题
- 3.8 到了,祝大家happy :) -------------------------->散分
- C#调用matlab时,出现异常:不支持此接口 (异常来自 HRESULT:0x80004002)(E_NOINTERFACE)
- linq to sql 继承
mypipe.PIPE_LENGTH = Convert.ToInt32(Convert.ToDouble(txtPipeLength.Text.Trim()));上面是不会报错的,只不过都转换成int了。
public int GetInt32(string str)
{
int res=0;
try
{
res=Convert.ToInt32(str.Trim());
}
catch
{
res=0;
}
return res;
}
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)
double.TryParse(txtPipeLength.Text.Trim());,out num): mypipe.PIPE_LENGTH= num;
如果非要那样则可以做一下判断即可string str = txtPipeLength.Text.Trim();
if (!string.IsNullOrEmpty(str))
{
int result = 0;
if (int.TryParse(str, out result)) //整数
{
mypipe.PIPE_LENGTH = Int32.Parse(str);
}
}
现在的问题是
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”之间没有隐式转换” 请问如何操作呢?
前面就这样改好了:
mypipe.PIPE_LENGTH = txtPipeLength.Text.Trim() == "" ? double.MinValue : Convert.ToDouble(TextBox1.Text.Trim());
就算能为null你想把数据库字段写成null也不能传递null,而是要在数据库的更新语句中写成字符串“null”
或者在存储过程中使用其数据库相应的null类型