我试了一个简单的程序但有问题。存储过程名:   hyprocJdbcTest
存储过程语句: create proc hyprocJdbcTest as
     select *from 职工 where 工资 >1800 
我的java片断:
import java.sql.*;public class javaDB { /**
 * @param args
 */
public static void main(String[] args) { // 定义数据库驱动程序
String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;
// 定义数据库连接地址
String DBURL = "jdbc:odbc:db" ;
// 定义数据库连接对象,属于java.sql包中的接口
Connection conn = null ;
// 定义Statement对象,用于操作数据库
Statement stmt = null ;
// 定义一字符串变量,用于保存SQL语句
String sql = null ;
//定义一个结果集以存放检索的结果
ResultSet r = null; // 1、加载驱动程序
try
{
Class.forName(DBDRIVER);
}
catch(Exception e)
{
// 此处使用out.print是处于演示目的,在实际开发中所有的错误消息,
//绝对不能够通过System.out.print打印,否则会存在安全问题
System.out.println("数据库驱动程序加载失败!!!") ;
} // 2、连接数据库
try
{
conn = DriverManager.getConnection(DBURL,"sa","123456") ;
}
catch(Exception e)
{
System.out.println("数据库连接失败!!!") ;
} // 3、操作数据库
// 通过Connection对象实例化Statement对象                  ResultSet rs = null; try
{
CallableStatement proc = conn.prepareCall( "{call hyprocJdbcTest()}" );
proc.execute(); rs = proc.executeQuery(); }
catch(Exception e)
{
System.out.println("操作数据库失败!!!") ;
}
                // 4、关闭数据库
try
{
// 关闭操作
stmt.close() ;
// 关闭连接
conn.close() ;
}
catch(Exception e)
{
System.out.println("数据库关闭失败!!!") ;
}
        }
}
需要怎么才能成功啊?谢谢!

解决方案 »

  1.   

    如果报错的话把错贴上来撒,程序好像没说明问题~~~String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;
    我感觉sql server的驱动不是这么写的吧……
      

  2.   

    SqlClient DataAccessBean = new SqlClient();
    dbConn = DataAccessBean.getConnection(); //设置存储过程参数
    String TrackSQL = "{call pro_VehTrackReplay(?,?,?)}";
    CallState = dbConn.prepareCall(TrackSQL);
    CallState.setString(1, id);
    CallState.setString(2, beginTime);
    CallState.setString(3, endTime);  Boolean bool = CallState.execute();
     if (bool == true)
     {
     ResultSet rs = CallState.getResultSet();
     while (rs.next())
     {
     out.println(rs.getString(4) + ";" + rs.getString(5) + ";" + rs.getString(2) +";" + rs.getString(6) +  ",");
     }
     rs.close();
     }
    dbConn.close();  http://www.handandaily.com
      

  3.   

    http://www.java2000.net/viewthread.jsp?tid=510微软的网站有完整的文档,估计都没看!
      

  4.   


    public void connect()...{      
        try...{ 
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                String url = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=wages";
            String user="sa";
            String password="123";
            conn=DriverManager.getConnection(url,user,password);
            }
            catch(Exception se) ...{
               System.out.println(se);
            }
         }
         
         
        public int rewrite1(String sql1)...{
            try ...{
                        this.sql1=sql1;
                        
            this.connect();
            Statement stmt =  conn.createStatement(); // 通过Statement接口进行数据库的查询与更改
            
                        return stmt.executeUpdate(sql1); 
                   
                    }
                catch (SQLException se) ...{
                       System.out.println(se);
            return 0;
                }
              
        }
         private void jButton3_actionPerformed(ActionEvent e) ...{
            try...{  
            String  sql1="{call wages1('"+this.jtext[1].getText()+"'," +
            "'"+b.jtabel2.getValueAt(b.jtabel2.getSelectedRow(),1)+"'," +
            "'"+this.jtext[2].getText()+"'," +
            "'"+this.jtext[3].getText()+"')}";
                if(db.rewrite1(sql1)==0)
                ...{
                   JOptionPane.showMessageDialog(this,"修改失败");
                }
                else
                ...{
                    JOptionPane.showMessageDialog(this,"修改成功");  
                }
        }
            catch(Exception E)...{
                       E.printStackTrace();
                    }
        } 
      

  5.   

    没有什么错误信息啊,编译是通过的,只是在程序执行过程中显示操作数据库失败的信息。JDBC-ODBC是使用桥连接方式连接数据库这不用怀疑吧,现在最主要的问题就是调用存储过程中产生的问题。继续,上面几位没说到点子上啊 
      

  6.   

    另外,调用存储过程最好不要用odbc,用jtds或者微软自己的jdbc驱动
    odbc的有些标准不一样的,存储过程可能会有问题