Android Question Mysql connect

tanush62

Member
I'm trying to connect to mysql server on local nettwork. What I'm doing wrong?

[CODE lang="b4x" title="Code"]
#AdditionalJar: mysql-connector-java-5.1.34-bin.jar
'.......


Public mysql As JdbcSQL

user = "someuser"
pass = "password"

Try
mysql.Initialize2("com.mysql.jdbc.Driver", "jdbc:mysql://192.168.0.11/information_schema", user, pass)
Catch
Log(LastException.Message)
appas = False
End Try

[/CODE]

I got the error:
[CODE lang="b4x" title="Code"]
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.Map.get(java.lang.Object)' on a null object reference
[/CODE]
 
Solution
You don't have to use mysql 5.x. you should be able to use newer mysql versions with the latest 5.1 driver. Have you tried? Don't use 8.x driver
Probably remove ".jar" from the #AdditionalJar line

And also, maybe use InitializeAsync instead of Initialize2
 
Last edited:
Upvote 0
It doesn't matter whether you exclude the jar extension or not.

First step is to post the full error message with the stack trace and the relevant code.
My bad Erel. Not error, but "Log(LastException.Message)" in line 13 give me this message and i cold not connect
 
Upvote 0
Here is the full error message when I remove try - catch

[CODE lang="b4x" title="Error"]Error occurred on line: 150 (Main)
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.Util.getInstance(Util.java:360)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2311)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at java.sql.DriverManager.getConnection(DriverManager.java:580)
at java.sql.DriverManager.getConnection(DriverManager.java:218)
at anywheresoftware.b4j.objects.SQL.Initialize2(SQL.java:56)
at com.kaf033.main._appset(main.java:842)
at com.kaf033.main._activity_create(main.java:746)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:146)
at com.kaf033.main.afterFirstLayout(main.java:105)
at com.kaf033.main.access$000(main.java:17)
at com.kaf033.main$WaitForLayout.run(main.java:83)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7590)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.Map.get(java.lang.Object)' on a null object reference
at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2983)
at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1873)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1802)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1206)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
... 29 more
[/CODE]
 
Upvote 0
You don't have to use mysql 5.x. you should be able to use newer mysql versions with the latest 5.1 driver. Have you tried? Don't use 8.x driver
 
Upvote 1
Solution
Maybe adding the port after the address ? (check if it is 3308)

B4X:
mysql.Initialize2("com.mysql.jdbc.Driver", "jdbc:mysql://192.168.0.11:3308/information_schema", user, pass)
 
Upvote 0
Back
Top