Я пытаюсь вычислить jdbc out для android, похоже, не получает никакой информации. Я не уверен, что есть проблема с драйвером или с подключением. Строки могут кому-то рассказать мне, что я пытался целыми неделями.Невозможно выполнить запрос с помощью jdbc
мой LogCat дает мне следующее, когда я пытаюсь запустить соединение:
02-21 10:55:08.940 9513-9561/? E/dalvikvm﹕ Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo
02-21 11:23:28.940 19790-19877/net.azurewebsites.cosy W/dalvikvm﹕ VFY: unable to find class referenced in signature (Ljavax/naming/Reference;)
02-21 11:23:28.940 19790-19877/net.azurewebsites.cosy I/dalvikvm﹕ Could not find method javax.naming.Reference.get, referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.initializeFrom
02-21 11:23:28.940 19790-19877/net.azurewebsites.cosy W/dalvikvm﹕ VFY: unable to resolve virtual method 14328: Ljavax/naming/Reference;.get (Ljava/lang/String;)Ljavax/naming/RefAddr;
02-21 11:23:28.940 19790-19877/net.azurewebsites.cosy D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0004
02-21 11:23:28.944 19790-19877/net.azurewebsites.cosy W/dalvikvm﹕ VFY: unable to find class referenced in signature (Ljavax/naming/Reference;)
02-21 11:23:28.948 19790-19877/net.azurewebsites.cosy E/dalvikvm﹕ Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo
02-21 11:23:28.948 19790-19877/net.azurewebsites.cosy W/dalvikvm﹕ VFY: unable to resolve new-instance 1453 (Ljavax/naming/StringRefAddr;) in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;
02-21 11:23:28.948 19790-19877/net.azurewebsites.cosy D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0006
02-21 11:23:28.952 19790-19877/net.azurewebsites.cosy D/dalvikvm﹕ DexOpt: unable to opt direct call 0x37fa at 0x14 in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;.storeTo
Вот мои строки подключения
public static final String connectionString = "jdbc:sqlserver://cosy.database.windows.net";
public static final String db_user = "eocribin";
public static final String db_pass = "Ecribin1";
public static final String DRIVER = "com.mysql.jdbc.Driver";
и вот мой вспомогательный класс:
public class BookHelper
{
private Connection conn;
private String TAG = BookHelper.class.getSimpleName();
public BookHelper()
{
conn = null;
try
{
Log.d(TAG,"attempt to connect");
Class.forName(jdbc.DRIVER);
conn = DriverManager.getConnection(jdbc.connectionString, jdbc.db_user, jdbc.db_pass);
}
catch (SQLException e)
{
Log.d(TAG,"server broke");
Log.e(TAG, e.getMessage());
}
catch (ClassNotFoundException e)
{
Log.d(TAG,"connections fault");
Log.e(TAG, e.getMessage());
}
}
public ResultSet getAllDetails()
{
Log.d(TAG,"we are connected");
Log.d(TAG,"starting query");
String query = "select Bookname, SubjectName from books join Subjects on Subjects.SubjectID = Books.subjectID where classID = '1a'";
ResultSet temp = null;
try
{
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
temp = rs;
}
catch(SQLException c)
{
Log.e(TAG, c.getMessage());
}
return temp;
}
}
, когда я изменяю соединение каким-либо образом, я получил исключение нулевого указателя, которое является странным.
Обратите внимание, что JDBC обычно не используется на Android, так как он не предназначен для использования через Wi-Fi или подключения мобильных данных. – CommonsWare
@CommonsWare вы бы рекомендовали вместо этого использовать php? –
Я бы порекомендовал веб-службу. Внедряете ли вы его в PHP или что-то еще зависит от вас. – CommonsWare