I am not that experienced in Sybase systems but I am keen to learn.
I have a simple android application that I am trying to connect to a Ultralight DB. This DB is stored in my project built on Android Studio 0.3.1. I've added the file ultralitejni12.jar in my libs and added it as library and I am able to do reference import in my java class without a problem. I even get intellisense help on this. Then I copied the DB (with extension <*.udb>) file into my assets in the project directory. The full path in windows explorer looks like this: (C:AndroidDevAnroidStudioSampleAppProjectSampleAppbuildexploded-bundlesComAndroidSupportAppcompatV71900.aar). I don't know if this should be the right directory to put it but believe me I already tried the 'libs' location but to no avail. The code I am using to connect to the database came straight from Sybase after Googling around but it's generating funny errors like ; "Gradle: cannot find symbol class ULjException" "Gradle: package com.ianywhere.ultralitejni12 does not exist".
Every attempt to rebuild does nothing for me. Please help...
packagecom.lebel.sampleapp;//importandroid.content.Context;//importcom.ianywhere.ultralitejni12.*;//importjava.sql.Connection;//importstaticcom.ianywhere.ultralitejni12.DatabaseManager.*;importandroid.content.Context;importcom.ianywhere.ultralitejni12.ConfigFileAndroid;importcom.ianywhere.ultralitejni12.Connection;importcom.ianywhere.ultralitejni12.DatabaseManager;importcom.ianywhere.ultralitejni12.ULjException;importstaticcom.ianywhere.ultralitejni12.DatabaseManager.connect;importstaticcom.ianywhere.ultralitejni12.DatabaseManager.createConfigurationFileAndroid;/***CreatedbyLebelon11/11/13.*/publicclassDatabase{privatestaticDatabase_instance=null;privatestaticConnection_dbconn;privatestaticfinalintdefaultPort=2639;privatestaticfinalStringdefaultUsername="dba";privatestaticfinalStringdefaultPassword="sql";privatestaticfinalStringdb="lebeldb.udb";privatestaticfinalStringLOG_EXCEPTION="Database Connection Error";Context_context;privateDatabase(Contextcontext)throwsULjException{_context=context;if(_dbconn==null){ConfigFileAndroidconfig;config=createConfigurationFileAndroid(db,_context);config.setConnectionString("haa");config.setUserName(defaultUsername);config.setPassword(defaultPassword);config.setPageSize(8192);try{_dbconn=connect(config);}catch(Exceptione){_dbconn=DatabaseManager.createDatabase(config);}}}protectedstaticDatabasegetInstance(Contextcontext)throwsULjException{if(_instance==null){_instance=newDatabase(context);}return_instance;}}
Since the above class is a singleton my calling code in the Activity that I'm using is as follow:
packagecom.lebel.sampleapp;importandroid.app.Activity;importandroid.content.Context;importandroid.os.Bundle;importandroid.widget.ArrayAdapter;importandroid.widget.ListView;importcom.ianywhere.ultralitejni12.*;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;/***CreatedbyLebelon11/11/13.*/publicclassactStaffListextendsActivity{privateList<String>StaffList;//privatestaticContextcontext;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.lyt_viewstaff);//context=this.getApplicationContext();try{setupViews();}catch(ULjExceptione){e.printStackTrace();}}privatevoidsetupViews()throwsULjException{try{Connection_dbconn=(Connection)Database.getInstance(this.getApplicationContext());Stringqry="SELECT TOP 10 Test FROM Test";PreparedStatementps=_dbconn.prepareStatement(qry);ResultSetrs=ps.executeQuery();StaffList=newArrayList<String>();while(rs.next()){//StaffList.add(rs.getInt(1));//StaffList.add(rs.getInt(1));//StaffList.add(rs.getString(rs.getOrdinal("StaffID")));StaffList.add(rs.getString(0));}rs.close();ps.close();//PopulatelistviewhereListViewlv=(ListView)findViewById(R.id.lvStaffList);lv.setAdapter(newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,StaffList));//}catch(ULjExceptione){//e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}}}