最近开发C#程序时碰到了这样一个问题:从一个数据库中查询出数据,往另一个数据库中插入。
在查询库中一些字段是varchar2类型,而插入库中对应的字段却是number类型,于是在查询语句中的这些字段就写成NVL(COLUMN_NAME,0)。在正式插入时对这...
在查询库中一些字段是varchar2类型,而插入库中对应的字段却是number类型,于是在查询语句中的这些字段就写成NVL(COLUMN_NAME,0)。在正式插入时对这些字段进行转换Convert.ToDouble(COLUMN_NAME)或Convert.ToInt32(COLUMN_NAME)。问题就出现了:如果在查询时不对这些字段进行NVL(COLUMN_NAME,0)处理,在进行类型转换时就有可能出错,即当COLUMN_NAME为NULL时,用Convert.ToDouble或Convert.ToInt32进行转换就出现问题,但我一用NVL(COLUMN_NAME,0)进行处理,插入库中的数据就被污染了,即本来是没有数据的字段(为NULL)在插入库中却为0了,我希望的效果是原来为NULL的字段,往插入库中插入时还是NULL。望高手指导。
展开
2个回答
展开全部
你可以用Double.TryParse(string s,out double result)和int.TryParse(string s,out double result)进行转换
追问
使用Double.TryParse(string s,out double result)和int.TryParse(string s,out double result)后确实可以在查询语句中的省去了NVL(COLUMN_NAME,0)的处理。但在插入时依然没有解决原来为NULL的字段,往插入库中插入时还是NULL的问题
追答
你表中那个字段允不允许为NULL,如果允许。你C#变量声明时,类型可以写成 double? 或 int? 。请注意类型后要多一个? 。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询