Cannot pass String by reference !
I have the same problem. I understood that if you pass "jxxxarray" or "String" they are passed by reference but I could not make it working. Here are the 2 parts of my code:
JAVA (The call to native function):
String toto = new String("toto");
int nativeCodeReturned = finreadGetFCRAProperties(toto)
System.out.println("fcra name: " + toto);
==> this prints "toto" but should print "FCRA1" !!!
C (The native function):
JNIEXPORT jint JNICALL
Java_com_trustedlogic_qa_CBridge_finreadGetFCRAProperties(JNIEnv
*env, jobject obj, jstring FCRAName) {
FCRAName is modified and now contains "FCRA1" in jstring format (I used the appropriate method to do that, and verified the content)
Please help !!!
Thx in advance,
Eg\\*
Please help !!!You can't modify the string, that is why strings are immutable.
So what you are doing is trying to change the reference (not the string that the reference points to.) And the reference is passed by value.
This is exactly the same thing that happens in java. It has nothing to do with JNI.
Similar Messages
-
Pass string by reference from subsequence to caller
Hi, I am unable to pass a string parameter by reference from a subsequence to its caller. Is there a trick in doing this or is it not possible?
Thank you,
Chris
Solved!
Go to Solution.Right Click on the parameter in the subsequence.
Make sure Pass By Reference is checked.
jigg
CTA, CLA
teststandhelp.com
~Will work for kudos and/or BBQ~ -
How can I pass a String by reference in java?
Hello!
My question is how to pass a String by reference in java.
I tried to declare my variable, instead of using "String xxx = "f";", I used "String xxx = new String ("f");" :
public static void main (String []args)
String xxx = new String("f");
StatusEnum result2 = getErrorPointStr(xxx);
public StatusEnum getErrorPointStr(String text)
StatusEnum testStatus = StatusEnum.PASS;
StringBuffer buffer = new StringBuffer();
buffer.append("123");
text = buffer.toString();
return testStatus;
After calling to getErrorPointStr(String text) function, xxx = "f"
So it does not work.
How can I solve this? It is very important, the function will receive String and not something else.
Thanks!Tolls wrote:
Which is why I said:
Which is why you only managed to change what 'text' referred to in the methodExcept that's not why. Even if String was mutable, doing text = whatever; would have the same effect; it would change what that variable refers to in the method, but it would not change the object's state.
I meant that, since there was no way to actually change the data (ie the char[] or whatever) within the object 'text' referred to, the OP was attempting to change what 'text' referred to and hoping it would be reflected outside the method...which we know won't happen as Java is pass-by-value.\Ah, now I see.
These by-value/by-reference threads tend to get confusing, because usually the person is passing a String, so the immutability of String tends to get in the way and just muddy the waters. -
Error: Cannot make a static reference to the non-static method
Below is a java code. I attempt to call method1 and method2 and I got this error:
Cannot make a static reference to the non-static method but If I add the keyword static in front of my method1 and method2 then I would be freely call the methods with no error!
Anyone has an idea about such error? and I wrote all code in the same one file.
public class Lab1 {
public static void main(String[] args) {
method1(); //error
public void method1 ()
public void method2 ()
}See the Search Forums at the left of the screen?
If you had searched with "Cannot make a static reference to the non-static method"
http://search.sun.com/search/onesearch/index.jsp?qt=Cannot+make+a+static+reference+to+the+non-static+method+&rfsubcat=siteforumid%3Ajava54&col=developer-forums
you would have the answer. Almost every question you will ask has already been asked and answered. -
The javascript makes the input field to be null and cannot pass variable to
Hi
I use the following code to check whether the upload file is in the right format extension.
However, once I use it and it cannot pass the variable to servlet and throw nullpointerexception.
How can I fix it?
<script language="JavaScript">
extArray = new Array(".jpg", ".png", ".gif");
function LimitAttach(form, file) {
allowSubmit = false;
if (!file) return;
while (file.indexOf("\\") != -1)
file = file.slice(file.indexOf("\\") + 1);
ext = file.slice(file.indexOf(".")).toLowerCase();
for (var i = 0; i < extArray.length; i++) {
if (extArray[i] == ext) { allowSubmit = true; break; }
if (allowSubmit) return true;
else
alert("Please only upload files that end in types: "
+ (extArray.join(" ")) + "\nPlease select a new "
+ "file to upload and submit again.");
return false;
</script>
OnSubmit="return LimitAttach(this.form, this.form.myimage.value)"
servlet:
boolean isMultipart = ServletFileUpload.isMultipartContent(request);the js works fine, just add id=myimage and it is ok
checking file type for uploading only image on client side -
Passing String Which Has Single Quote Row/Value to a Function Returns Double Quoate
Hi, I'm getting weird thing in resultset. When I pass String which has single quote value in it to a split function , it returns rows with double quote.
For example following string:
'N gage, Wash 'n Curl,Murray's, Don't-B-Bald
Returns:
''N gage, Wash ''n Curl,Murray''s, Don''t-B-Bald
Here is the split function:
CREATE Function [dbo].[fnSplit] (
@List varchar(8000),
@Delimiter char(1)
Returns @Temp1 Table (
ItemId int Identity(1, 1) NOT NULL PRIMARY KEY ,
Item varchar(8000) NULL
As
Begin
Declare @item varchar(4000),
@iPos int
Set @Delimiter = ISNULL(@Delimiter, ';' )
Set @List = RTrim(LTrim(@List))
-- check for final delimiter
If Right( @List, 1 ) <> @Delimiter -- append final delimiter
Select @List = @List + @Delimiter -- get position of first element
Select @iPos = Charindex( @Delimiter, @List, 1 )
While @iPos > 0
Begin
-- get item
Select @item = LTrim( RTrim( Substring( @List, 1, @iPos -1 ) ) )
If @@ERROR <> 0 Break -- remove item form list
Select @List = Substring( @List, @iPos + 1, Len(@List) - @iPos + 1 )
If @@ERROR <> 0 Break -- insert item
Insert @Temp1 Values( @item ) If @@ERROR <> 0 Break
-- get position pf next item
Select @iPos = Charindex( @Delimiter, @List, 1 )
If @@ERROR <> 0 Break
End
Return
End
FYI: I'm getting @List value from a table and passing it as a string to split function.
Any help would be appreciated!
ZKfixed the issue by using Replace function like
Replace(value,'''''','''')
Big Thanks Patrick Hurst!!!!! :)
Though I came to another issue which I posted here:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a26469cc-f7f7-4fb1-ac1b-b3e9769c6f3c/split-function-unable-to-parse-string-correctly?forum=transactsql
ZK -
Passing objects by reference in PL/SQL
Hi,
I have come across an unexpected problem using object types in PL/SQL that is causing me some grief. I'm from a Java background and am relatively new to Oracle Objects but what I'm trying to do is fairly trivial, I think. The code below illustrates the problem.
--- cut here ---
CREATE OR REPLACE TYPE test_obj_t AS OBJECT
num INTEGER,
CONSTRUCTOR FUNCTION test_obj_t RETURN SELF AS RESULT
CREATE OR REPLACE TYPE BODY test_obj_t IS
CONSTRUCTOR FUNCTION test_obj_t RETURN SELF AS RESULT IS
BEGIN
num := 0;
RETURN;
END;
END;
CREATE OR REPLACE PACKAGE test_obj_ref AS
PROCEDURE init(o IN test_obj_t);
PROCEDURE inc;
FUNCTION get_num RETURN INTEGER;
END;
CREATE OR REPLACE PACKAGE BODY test_obj_ref IS
obj test_obj_t;
PROCEDURE init(o IN test_obj_t) IS
BEGIN
obj := o;
END;
PROCEDURE inc IS
BEGIN
obj.num := obj.num + 1;
END;
FUNCTION get_num RETURN INTEGER IS
BEGIN
RETURN obj.num;
END;
END;
--- cut here ---
The object type test_obj_t holds a integer and the test_obj_ref package holds a 'reference' to an instance of the object.
To test the above code I run this PL/SQL block:
declare
obj test_obj_t;
begin
obj := test_obj_t;
test_obj_ref.init(obj);
dbms_output.put_line('obj.num='||obj.num);
dbms_output.put_line('test_obj_ref.get_num='||test_obj_ref.get_num);
test_obj_ref.inc;
dbms_output.put_line('obj.num='||obj.num);
dbms_output.put_line('test_obj_ref.get_num='||test_obj_ref.get_num);
test_obj_ref.inc;
dbms_output.put_line('obj.num='||obj.num);
dbms_output.put_line('test_obj_ref.get_num='||test_obj_ref.get_num);
end;
giving the output:
obj.num=0
test_obj_ref.get_num=0
obj.num=0
test_obj_ref.get_num=1
obj.num=0
test_obj_ref.get_num=2
It appears that the object held by the test_obj_ref package is being incremented as expected, but I would have expected the object declared in the PL/SQL block to be pointing to the same object and so should report the same incremented values.
I suspect that the object is copied in the call to test_obj_ref.init() so I end up with two object instances, one that is held by the test_obj_ref package and one in the anonymous block. Although, I thought that all IN parameters in PL/SQL are passed by reference and not copied!
Am I right?
Is passing objects by reference possible in PL/SQL, if so how?
I'm using Oracle 10.2.0.3.
Cheers,
Andy.the object being passed to the test_obj_ref.init+ procedure is passed by reference; however, when you assign it to your package variable obj it is being copied to a new instance. you can pass object instances as parameters to procedures using the +IN OUT [NOCOPY]+ *calling mode, in which case modifications to the attributes of the passed object will be reflected in the calling scope's instance variable.
oracle's only other notion of an object reference is the +"REF <object-type>"+ datatype, which holds a reference to an object instance stored in an object table or constructed by an object view.
hope this helps...
gerard -
I cannot pass information from my Mac to my external hard drive, what can I do?
Hello,
This is my first Mac and I am new to all of it. I have an external hard drive that I use to use with my old PC . On the external hard drive box it says its compatible with both windows and Max os x. I can pass files from my external hard drive to Mac but I cannot pass files from my MacBook Air to my external hard drive. No messages comes up or anything explain why it simply doesnt allow me to do so. What can I do?Your hard drive is formatted NTFS for windows. That format is read-only from OSx. If it's not needed on Windows anymore, you can use Disk Utility and format it for the Mac. Mac OS extended (Journaled) - Partition Map scheme of GUID Partition table.
Make sure to save any data from the drive as it will be wipped doing the above. -
Problem with prepared statement where cluase when passing string value.Help
I am updating a table using the following code. I am using string parameter in where clause. if I use Long parameter in where clause with ps.setLong , this code is working. Is there any special way to pass string value? Am I doing anything wrong?
===================
updateMPSQL.append("UPDATE MP_Table SET ");
updateMPSQL.append("MPRqmt = ?,End_Dt = ? ");
updateMPSQL.append("where POS = ? ");
System.out.println(updateMPSQL.toString());
con = getConnection(false) ;
ps = con.prepareStatement(updateMPSQL.toString());
ps.setLong(1,MPB.getMPRqmt());
ps.setDate(2,MPB.getEnd_Dt());
ps.setString(3,MPB.getPos());
result = ps.execute();
System.out.println("Result : " + result);
==========
Please help me.
Thanks in advance.
Regards,
Sekhardoesn't Pos look like a number rather than a string variable?
if I use Long
parameter in where clause with ps.setLong , this code
is working.
updateMPSQL.append("where POS = ? ");
ps.setString(3,MPB.getPos()); -
Is it possible to use the value of a string to reference a component in the
I'm fairly new to Java so this may be a stupid question!
Is it possible to use the value of a string to reference a component in the code? For example in the code below, Wall is a class holding 3 different arrays. The Robot class has an array called finishBricks. When the buildWall method is run it receives the integers width and height which are used to construct the dimensions string. I want to use this string to then load the appropriate Wall array into the finishBricks array.
I hope this makes sense! Any help would be greatly appreciated!
class Robot {
public double[][] finishBricks;
public void buildWall(int width, int height) {
Wall w = new Wall();
String dimensions = "Wall" width "x" +height;
this.finishBricks = w.xxxx; // where xxxx is replaced by whatever the String dimensions is
class Wall {
public double[][] Wall4x2 = {
{-30.00,-01.60,27.45},
{-30.00,-06.75,27.45},
{-30.00,-13.55,27.45},
{-30.00,-20.35,27.45},
{-30.00,-22.00,28.65},
{-30.00,-16.85,28.65},
{-30.00,-10.05,28.65},
{-30.00,-03.25,28.65}
public double[][] Wall3x3 = {
{-30.00,-01.60,27.45},
{-30.00,-06.75,27.45},
{-30.00,-13.55,27.45},
{-30.00,-15.20,28.65},
{-30.00,-10.05,28.65},
{-30.00,-03.25,28.65},
{-30.00,-01.60,29.85},
{-30.00,-06.75,29.85},
{-30.00,-13.55,29.85},
public double[][] Wall2x4 = {
{-30.00,-01.60,27.45},
{-30.00,-06.75,27.45},
{-30.00,-08.40,28.65},
{-30.00,-03.25,28.65},
{-30.00,-01.60,29.85},
{-30.00,-06.75,29.85},
{-30.00,-08.40,31.05},
{-30.00,-03.25,31.05},Map walls = new HashMap ();
walls.put ("2x2", new double[][] {
new double[] {
1,
0
new double[] {
0,
1
double[][] wall = (double[][]) walls.get ("2x2"); -
Failure using {CALL } syntax & passing string params w/ # (hash)
We are experiencing a problem calling functions using the {CALL } syntax and passing string parameters that contain # (hash) symbols. Apparently, something interprets the # inside the string literal and fails the call.
We use this syntax with procedure calls from a Java applet to an Oracle 8i database using the 8.1.6.2.0 ODBC Oracle driver. The applet is running under the Java 1.3.1 plug-in and we are using a third party JDBC, type III, driver from JDataConnect to link the applet to the Oracle ODBC driver.
Any insight on this would be greatly appreciated.What's the result of con.getAutoCommit()?
You might try con.setAutoCommit(true) to see if that sorts it.
/k1 -
What is the use of passing String[] args in main() method?
what is the use of passing String[] args in main() method?
Is there any specific use for this ?actually my sir asked me the same question & I gave
the same reply as given by you........but he further
asked what is the use of this also??
ie accepting cmd line args at runtime??is there any
specific purpose ??Apart from the one you just mentioned? No -
Kinda urgent please help pass strings to doubles and strings to ints
Need to know how to pass strings to doubles and strings to ints
and to check if a string is null its just if (name == null;) which means black right?
like size as a string and then make the string size a doublecupofjava666 wrote:
Need to know how to pass strings to doubles and strings to ints
and to check if a string is null its just if (name == null;) which means black right?
like size as a string and then make the string size a doubleThink he means blank.
Check the Wrapper classes (Double, Integer) in the api.
parseInt() parseDouble() both take a string and return a primitive.
String s = null;
if(s == null) should do the trick!
Regards.
Edited by: Boeing-737 on May 29, 2008 11:08 AM -
Tree List Value - Passing String
apex4
database 10g EE
I have this code which will pass a value to a textfiled but only numbers. How about passing string values in a textfield? Any idea?
select case when connect_by_isleaf = 1 then 0
when level = 1 then 1
else -1
end as status,
level,
"ENAME" as title,
null as icon,
"EMPNO" as value,
"ENAME" as tooltip,
'javascript:$s("P13_EMPNO",'||EMPNO||');' as link
from "#OWNER#"."EMP"
start with "MGR" is null
connect by prior "EMPNO" = "MGR"
order siblings by "ENAME"Hi Jose,
I believe Patrick already responded to this question on another thread: Tree List Value , where he has stated:
just use
'javascript:$s("P13_ENAME","'||ENAME||'");' as link
instead.
Regards,
Hilary -
Cannot pass parameter to webservice using wsdl
cannot pass parameter to webservice using wsdl
I write code the following:
step 1
-->
DECLARE
SERVLET_NAME VARCHAR2(32) := 'orawsv';
BEGIN
DBMS_XDB.deleteServletMapping(SERVLET_NAME);
DBMS_XDB.deleteServlet(SERVLET_NAME);
DBMS_XDB.addServlet(NAME => SERVLET_NAME,
LANGUAGE => 'C',
DISPNAME => 'Oracle Query Web Service',
DESCRIPT => 'Servlet for issuing queries as a Web Service',
SCHEMA => 'XDB');
DBMS_XDB.addServletSecRole(SERVNAME => SERVLET_NAME,
ROLENAME => 'XDB_WEBSERVICES',
ROLELINK => 'XDB_WEBSERVICES');
DBMS_XDB.addServletMapping(PATTERN => '/orawsv/*',
NAME => SERVLET_NAME);
END;
step 2
--> CREATE USER test IDENTIFIED BY test QUOTA UNLIMITED ON users;
step 3
--> GRANT CONNECT,CREATE TABLE, CREATE PROCEDURE TO test;
step 4
--> GRANT XDB_WEBSERVICES TO test
step 5
--> GRANT XDB_WEBSERVICES_OVER_HTTP TO test
step 6
--> GRANT XDB_WEBSERVICES_WITH_PUBLIC TO test
step 7
-->
SELECT dbms_xdb.getftpport() FROM dual;
SELECT dbms_xdb.gethttpport() FROM dual;
exec dbms_xdb.setHttpPort(8080);
exec dbms_xdb.setFtpPort(2100);
step 8
-- Double check
host lsnrctl STATUS
SET head off
-- Valid?
SELECT * FROM dba_registry WHERE comp_id='XDB';
SET head ON
connect test/test;
CREATE OR REPLACE FUNCTION FACTORIAL_I(N PLS_INTEGER)
RETURN PLS_INTEGER
IS
n_result number;
BEGIN
IF N > 1 THEN
n_result := N * FACTORIAL_I(N - 1);
RETURN(n_result);
ELSE
RETURN(1);
END IF;
END;
WSDL Output:
http://localhost:8080/orawsv/TEST/FACTORIAL_I?wsdl
output picture: http://www.picza.net/show.php?id=20120429vlxdlFdvFPdvF134795
I try pass prameter by http://localhost:8080/orawsv/TEST/FACTORIAL_I?SBINARY_INTEGER-FACTORIAL_IInput=5
but error <ErrorNumber>ORA-31011</ErrorNumber>
Edited by: 930927 on 29 เม.ย. 2555, 9:02 น.Using something like SoapUI or do it via PL/SQL as shown here: Re: Ora-31011 with a very, very simple native webservice
Maybe you are looking for
-
G/L account determination for movement type 702, 309
All SAP Gurus, In our plant, for movement type 702 (inventory count), 309 (material to material transfer), some /L account assignment is wrong. I suppose these settings are in Keys GBB, AUM and PRD. Will cahnging the G/L accounts n these keys will gi
-
I have a new MacBook Pro with OS10.8.2 and cannot get Contacts to print a list of addresses with pictures showing. There is a check box selecting "picture" which has been checked - but no picture. This worked fine on OS10.7.5. Problem??
-
Vendor Confirmation on a PO in creation mode.
Hi , We have a requirement in our project such that we need to put the vendor confirmation on a PO in the creation mode of PO ( ME21N / ME59 ). Is it possible in standard SAP ? As per my analysis , the Confirmation can come on a PO only after it has
-
How do I upload a picture in my airdrop icon
How do I upload a picture in my airdrop icon
-
PLS-00306: wrong number or types of arguments in call to 'PROC2'
This is the procedure i have created create or replace procedure proc2(n1 in number, n2 in number, tot out number) is begin tot:=n1+n2; end; the error when i try to run is ERROR at line 1: ORA-06550: line 1, column 7: PLS-00306: wrong number or types