将数据类型varchar转换为数字时出错

时间:2012-03-22 03:03:37

标签: java sql-server sql-server-2000

我在以下查询中收到错误:

insert into ProductStone ( Pieces, Weight, CutChg, LotID, 
                           CatID, OrnID, StoneID, ShadeID, CutID, ChgType, SetID) 
 values (  '10',  '0.3',  'null',  '601',  'H',  '101',  
           'S',  '0',  '13',  'null',  '4' ).

问题是我在运行时创建了我的查询。请告诉我如何在运行时检查值是否为空。

我用于在运行时构建动态查询的部分代码如下所示。我改变了以前的代码,但在某些情况下,它正在运行,有些情况下不使用空值。

  if ((updatedData.elementAt(r).get(c).get(1)==null) ||
      (updatedData.elementAt(r).get(c).get(1).equals("")))
  {
      updatedData.elementAt(r).get(c).set(1,"0");
  }
  else if (!(updatedData.elementAt(r).get(c).get(1).toString().equalsIgnoreCase("null") )) 
  {
      updatedData.elementAt(r).get(c).set(1,"0");   
  }

2 个答案:

答案 0 :(得分:1)

if((updatedData.elementAt(r).get(c).get(1)==null) || (updatedData.elementAt(r).get(c).get(1).equals("")))
           {
             updatedData.elementAt(r).get(c).set(1,null);
           }

更改该段代码并检查......

还有一点

insert into ProductStone ( Pieces, Weight, CutChg, LotID, 
CatID, OrnID, StoneID, ShadeID, CutID, ChgType, SetID) 
 values (  '10',  '0.3',  'null',  '601',  'H',  '101',  
'S',  '0',  '13',  'null',  '4' ).

当你因为null而不把它放在引号中时,将其转换为以下语句并检查

insert into ProductStone ( Pieces, Weight, CutChg, LotID, 
CatID, OrnID, StoneID, ShadeID, CutID, ChgType, SetID) 
 values (  '10',  '0.3',  null,  '601',  'H',  '101',  
'S',  '0',  '13',  null,  '4' ).

答案 1 :(得分:0)

我的问题正在通过两个验证来解决

//First
if ((updatedData.elementAt(r).get(c).get(1).toString().equals("null"))) 
{
updatedData.elementAt(r).get(c).set(1,"0");   
}
//Second
if (!(updatedData.elementAt(r).get(c).get(1).toString().equals("null"))) 
{
updateQuery +=updatedData.elementAt(r).get(c).get(0)+"='"+updatedData.elementAt(r).get(c).get(1)+"', " ;
insertColValsStr += " '"+updatedData.elementAt(r).get(c).get(1)+"') ";        
}
else
{
updateQuery += updatedData.elementAt(r).get(c).get(0)+"=null " ;
insertColValsStr += " null ) " ;       
}