连接数据库
/*
* 获取新的数据库连接
*/
public static Connection getCon() {
//数据库连接名称
String username="root";
//数据库连接密码
String password="******";
String driver="com.mysql.jdbc.Driver";
//其中test为数据库名称
String url="jdbc:mysql://10.201.164.33:3306/vicidial?useUnicode\\=true&characterEncoding\\=utf-8&zeroDateTimeBehavior\\=convertToNull";
Connection conn=null;
try{
Class.forName(driver);
conn=(Connection) DriverManager.getConnection(url,username,password);
System.out.println("111");
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
调用 call 存储过程
public static void main(String[] args) {
Statement stmt;
try {
Connection conn = getCon();
stmt = conn.createStatement();
//String _sql ="call proc_api_auto_calldetail_bylist_report('AI_TEST','[ALL]','0')";
ResultSet rs = stmt.executeQuery("call proc_api_auto_calldetail_bylist_report('AI_TEST',0,0)");//选择import java.sql.ResultSet;
while(rs.next()){//如果对象中有数据,就会循环打印出来
System.out.println(rs.getString("List ID"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在数据库中执行的 call 存储过程的语句
call proc_api_auto_calldetail_bylist_report("AI_TEST","[ALL]","0")
在这里,放到java中 这个[ALL]不能使用 ,报的错误是:
java.sql.SQLException: Incorrect integer value: '[all]' for column 'para_list' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2678)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1612)
at com.gx.web.OperationAction.main(OperationAction.java:881)
所以采取了 integer的默认值 0;