2012-05-24 2 views
0

Я нашел ответы, но ничего не было полезно.ClassNotFoundException при подключении к разъему mysql jdbc на android

Я добавил mysql-connector-java-5.1.7-bin.jar ссылки на библиотеки и следующий метод для моего основного класса.

private void getServerData(String id, String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException 
{ 
    Log.i("Database Connection", " requesting data from server"); 

    Class.forName("com.mysql.jdbc.Driver").newInstance();    
    Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/db_easy_maintenance", "root", "maintenance"); 
    Statement stm = con.createStatement(); 
    ResultSet rs = stm.executeQuery("SELECT Name FROM industrial_object"); 
    String entry; 
    while(rs.next()) 
    { 
     entry=rs.getString("Name"); 
     Log.i("Database Connection", "getting " + entry); 
    } 

    con.close(); 

} 

Я начинаю мое приложение и получить java.lang.ClassNotFoundException: com.mysql.jdbc.Driver в java.lang.Class.classForName.

Если я не использую try ... catch ... тогда я получаю это исключение перед компиляцией.

Что случилось?

+0

Вы также добавили jq-соединитель mysql в свой путь к классам? Неясно, что вы подразумеваете под «добавлением ... библиотек ссылок». – QuantumMechanic

+0

Вы положили банку в 'libs'? –

+0

да, да. ссылочные библиотеки означают "ссылочные библиотеки" в затмении -> Package Explorer -> MyProject –

ответ

1

см: http://developer.android.com/search.html#q=dx&t=0 и Android JDBC not working: ClassNotFoundException on driver - мой ответ внизу дает нелепые конкретные инструкции, хотя мне любопытно, как было полезно переключиться на 1.6.

+0

ok Я использовал вашу библиотеку вместо mysql-connector-java-5.1.7 –

+0

mysql-connector-java-5.1.20 тоже плохо для меня –

0

Проверьте, что библиотека экспортирована (имеет атрибут exported="true" в файле .classpath). Вы также можете сделать это на соответствующей вкладке в настройках проекта в Eclipse.

+0

хорошо тот мой путь к классам файл:? –

+0

\t \t \t \t \t

+0

несчастливо не работает –

0

Возможно, это не сработает, поскольку в Android используется бит другой байт-код. Tyr, чтобы проверить, правильно ли переводится библиотека JDBC MySQL в формат Dalvik. Есть инструмент с именем dex для перевода байт-кода JVM в файл Dalvik. Если JDBC-драйвер содержит классы, не переносимые на Android, или какой-либо собственный код, вы не можете использовать его в Android.

+0

не может найти этот инструмент. Даже Google не показывают полезные записи. –

0

JDBC редко используется на Android, и я, конечно, не рекомендовал бы его.

JDBC предназначен для высокоскоростных, низкозатратных, высоконадежных сетевых подключений (например, от настольного компьютера до сервера баз данных, сервера веб-приложений до сервера базы данных). Мобильные устройства предлагают малое из них, и ни один из них не последователен.

Так альтернатива, что я советую вам использовать состоят на:

Создание веб-службы вокруг вашей базы данных и доступа, что с Android.

В качестве побочных преимуществ вы улучшаете безопасность (по сравнению с оставлением открытой базы данных), могут выгружать некоторую бизнес-логику от клиента, могут лучше поддерживать другие платформы (например, веб-платформы или веб-платформы) и т. Д.

+0

я знаю, и мой бывший вариант использовал это тип подключения, но мой босс думает иначе, мы используем только подключение к локальной сети и не хотим публиковать это приложение. –

+0

@K_Anas: Можете ли вы показать образец кода того, что вы сказали? Я имею в виду создание веб-службы для доступа к mysql db. – GAMA

0

Это должно сработать, возможно, вам стоит попробовать с другой JavaSDK и другой платформой Android.

+0

, который sdk вы рекомендуете? –