Hi,
somebody can help me!

my database is: mysql-5.0.0a-alpha
the connection driver is:mysql-connector-java-3.1.1-alpha-bin.jar

I want to test stored procedure of the new feature in MySQL version 5.0. A 

I can call the stored procedure procPara in Window Console as next show,
but when I run in procTest.java,I get error Messages.
The error is at the line:
 CallableStatement cs=conn.prepareCall("{call procPara(?)}");
 between checkpoint 1 and checkpoint 2

your answer is highly appreciated!
from: NanFei
---------------------------------------------------------------------

mysql> delimiter //
mysql>
mysql> CREATE PROCEDURE procPara(IN name varchar(16))
    ->      BEGIN
    ->        SELECT note FROM kmdoc where username=name;
    ->      END
    ->  //
Query OK, 0 rows affected (0.22 sec)

mysql> call procPara("John")//
+------------------------------------------+
 | note                                             |
+------------------------------------------+
 | mysql Manul                               |
 | Office2000                                  |
 | PDF                                            |
 | PowerPoint Animation Runtime   |
 | Office2003                                  |
 | Test Title                                    |
 | Say Hello                                   |
+-----------------------------------------+
7 rows in set (1.16 sec)

Query OK, 0 rows affected (1.67 sec)

mysql>

------------------------------------------------------------------------------
procTest.java  as following:

package km;
import java.sql.*;

public class procTest{
  public static void main(String[] args)throws Exception {
    String driverConnection="jdbc:mysql://localhost/";
    String catalog="mycatloge";
    String user="myname";
    String psw="mypsw";
    String connDbUserPsw=driverConnection+catalog+
                                       "? user="+user+"&password="+psw;
    try {
      Class.forName("com.mysql.jdbc.Driver");
    }
    catch (ClassNotFoundException e) {}
    Connection conn = DriverManager.getConnection(connDbUserPsw);
    System.out.println("checkpoint 1");
    CallableStatement cs=conn.prepareCall("{call procPara(?)}");
    System.out.println("checkpoint 2");
    cs.setString(1,"john");
    java.sql.ResultSet rst=cs.executeQuery();
    while(rst.next()){
      String s=rst.getString(1);
      System.out.println(s);
    }
  }
}


Messages:

checkpoint 1
java.lang.StringIndexOutOfBoundsException: String index out of range: -9
 at java.lang.String.substring(String.java:1480)
 at com.mysql.jdbc.DatabaseMetaData$TypeDescriptor.<init>(DatabaseMetaData.java:7031)
 at 
com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:6615)
 at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:2637)
 at 
com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:904)
 at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:72)
 at com.mysql.jdbc.Connection.prepareCall(Connection.java:999)
 at com.mysql.jdbc.Connection.prepareCall(Connection.java:978)
 at km.procTest.main(procTest.java:17)
Exception in thread "main" 

-------------------------------------------------------------------------

Reply via email to