ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » Oracle Developer Suite » 求助!使用oracle.jdbc,更新数据库的问题

标题: 求助!使用oracle.jdbc,更新数据库的问题
离线 megson
一般会员



精华贴数 0
个人空间 0
技术积分 186 (10129)
社区积分 0 (56066)
注册日期 2002-5-2
论坛徽章:0
      
      

发表于 2003-5-12 22:05 
求助!使用oracle.jdbc,更新数据库的问题

private void initJDBC ()
{
  try{
    class.forName("oracle.jdbc.driver.OracleDriver".newInstance();
                 String dwUrl = "jdbcracle:thin:@skull:1521:HERO";
    connDW = DriverManager.getConnection(dwUrl, "scott", "tiger";
// define SQL commands
   String sqlInsert = "INSERT INTO Quarterly_Sales "
                  + " (Region_ID, Store_ID, Year, "
                  +  " Quarter, Sales) "
                    +  " VALUES (?, ?, ?, ?, ?)";
   String sqlUpdate = "UPDATE Quarterly_Sales "
                  + " SET Sales = Sales + ? "
                  + "WHERE Region_ID = ? "
                    +  " AND Store_ID = ? "
                  +  " AND Year = ?"
                  +  " AND Quarter = ?";
// prepare statements
   psInsert = connDW.prepareStatement (sqlInsert);
   psUpdate = connDW.prepareStatement (sqlUpdate);
  } catch (Exception e)
  {  System.out.println ("Error initializing JDBC connection";
         e.printStackTrace();
  }
}

private void addToUpdate (String region, String store, String year,String quarter, String amount)
{
  try
  {
// first try to update existing quarter
   psUpdate.clearParameters();
   psUpdate.setString (1, amount);
   psUpdate.setString (2, region);
   psUpdate.setString (3, store);
   psUpdate.setString (4, year);
   psUpdate.setString (5, quarter);
   int n = psUpdate.executeUpdate();
   System.out.println(n);
}catch (Exception e)
  {  System.out.println ("Error Updating to database";
     e.printStackTrace();
  }
}

private void addToInsert (String region, String store, String year,String quarter, String amount)
{
// if no updates, add new quarter
   try{
         psInsert.clearParameters();
         psInsert.setString (1, region);
         psInsert.setString (2, store);
         psInsert.setString (3, year);
         psInsert.setString (4, quarter);
         psInsert.setString (5, amount);
         psInsert.executeUpdate();
         nInsert++;
   }catch (Exception e)
     {  System.out.println ("Error writing to database";
        e.printStackTrace();
      }
}

public static void main(String[] args){
    Edit3   test = new Edit3();
    test.initJDBC();
    test.addToInsert("02", "10", "2003" , "01", "10";
    test.addToUpdate("02", "10", "2003" , "01", "30";
    test.addToInsert("02", "10", "2003" , "02", "10";          
   test.closeJDBC();
}

~~~~~~~~~~~~~~~~~~~~~~
数据字典
   region, store, year, quarter,    salse
     char    char  char    char    numeric(8,3)
照理说结果是
   region, store, year, quarter, amount
     __02 __10___2003___01___40
     __02 __10___2003___02___10
可是test.addToUpdate("02", "10", "2003" , "01", "30";却不成功。
现在错误的结果是
   region, store, year, quarter, amount
     __02__10___2003___01___10
     __02__10___2003___02___10

请问是什么道理啊?问题是不是出在update Quarterly_Sales SET sale= sale + ? (amount)上啊?


只看该作者    顶部
离线 armok
版主



精华贴数 0
个人空间 0
技术积分 1354 (1288)
社区积分 1 (34165)
注册日期 2002-11-25
论坛徽章:2
会员2006贡献徽章授权会员    
      

发表于 2003-5-14 12:54 
建议你一句一句调试,找出问题。
这个论坛使用Java编程人的不多。


__________________
我的主页 http://61.144.28.248/dev 欢迎讨论developer开发问题
只看该作者    顶部
离线 megson
一般会员



精华贴数 0
个人空间 0
技术积分 186 (10129)
社区积分 0 (56066)
注册日期 2002-5-2
论坛徽章:0
      
      

发表于 2003-5-15 19:26 
问题找出来了
应该是oracle,sql本身,呵呵

region, store, year, quarter都使用char的,所以在where中要用trim()去掉额外空格。


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问