db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Francois Orsini <francois.ors...@gmail.com>
Subject Re: Derby Stored Procedure Help!
Date Mon, 13 Apr 2009 18:55:32 GMT
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.
>>
>>
>
>

Mime
View raw message