To add on Rick's comments:

Sivagururaja,

In your code, you are loading Derby's "embedded" driver but your connection URL is to connect to a remote (server) Derby instance...
If you want to connect to a remote Derby instance, you would have to load Derby's network client driver:
"org.apache.derby.jdbc.ClientDriver" instead of the embedded one...

--francois

On Mon, Apr 13, 2009 at 5:58 AM, Rick Hillegas <Richard.Hillegas@sun.com> wrote:
Hello,

The connection url in the database procedure looks suspicious. Normally, database procedures use the special server-side connection url: "jdbc:default:connection". This ensures that the procedure's work happens inside the same transaction as the calling code. This topic is discussed in the Derby Developer's Guide: http://db.apache.org/derby/docs/10.4/devguide/devguide-single.html#cdevspecial29620

The procedure below opens a new connection to the database.  Is there some reason that the procedure does its work in a separate connection/transaction as coded below?

Thanks,
-Rick


sivagururaja wrote:
Hi All,

I am creating the stored procedure in Derby DB. Here it is,

CREATE PROCEDURE insertStud(IN RollNo Integer, in FirstName varchar(10))
PARAMETER STYLE JAVA MODIFIES SQL DATA LANGUAGE JAVA
EXTERNAL NAME 'javadbsp.DBClass.insertStud'

And the method is,

public class DBClass
{
   public static void insertStud(int rollno, String name)
   {
       try
       {
           Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //or
ClientDriver
           Connection conn =
DriverManager.getConnection("jdbc:derby://localhost:1527/Test", "uname",
"passwd");
           PreparedStatement ps1 = conn.prepareStatement("insert into
SAM.STUD values(?,?)");
           ps1.setInt(1, rollno);
           ps1.setString(2, name);
           ps1.executeUpdate();
           conn.close();
       }
       catch (Exception ex)
       {
           System.out.println("Error: "+ex.getMessage());
       }
   }    }

My table structure is,

create table "SAM".STUD
(
       ROLLNO INTEGER,
       FIRSTNAME VARCHAR(10)
)

My class is,

public class MyClass1
{
.......
..........
public void insert()
{
try
       {
           Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); // or
ClientDriver
           Connection Con1 =
DriverManager.getConnection("jdbc:derby://localhost:1527/Test", "uname",
"passwd");
           CallableStatement cst = Con1.prepareCall("call
insertStud(?,?)");
           cst.setInt(1, Integer.valueOf(jTextField1.getText().trim()));
           cst.setString(2, jTextField2.getText().trim());
           int i=cst.executeUpdate();
           System.out.println("Rows Updated: "+i);
       }
       catch (Exception ex)
       {
           System.out.println("Error: "+ex.getMessage());
       }
}
......
}

And i install the JAR files as per the document,
http://wiki.apache.org/db-derby/DerbySQLroutines
http://wiki.apache.org/db-derby/DerbySQLroutines
I can able to run the application successful.
But nothing can be inserted.

Please let me know what could be the problem.