我试了一个简单的程序但有问题。存储过程名: 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("数据库关闭失败!!!") ;
}
}
}
需要怎么才能成功啊?谢谢!
存储过程语句: 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("数据库关闭失败!!!") ;
}
}
}
需要怎么才能成功啊?谢谢!
我感觉sql server的驱动不是这么写的吧……
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
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();
}
}
odbc的有些标准不一样的,存储过程可能会有问题