MySql-java.Lang.ClassNotFoundException:com.mysql.jdbc.Driver(React Native,Android)

时间:2018-06-22 17:20:08

标签: android mysql android-studio react-native jdbc

我正在为React Native应用开发本机模块。在模块中,我尝试建立JDBC连接。我还使用android studio加载了mysql-connector-java-8.0.11连接器,但出现上述错误。

我已经使用android studio将jar文件添加为模块。

以下是我的代码:

<div *ngIf="myVar; then myVar; else nothing"></div>
<ng-template #foo>My Foo-Content</ng-template>
<ng-template #nothing>No Content</ng-template>

这是我的gradle文件:

package com.myproject.helloworld;

import android.widget.Toast;


import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Map;
import java.util.HashMap;

import javax.sql.DataSource;

public class MyModule extends ReactContextBaseJavaModule {

  private static final String DURATION_SHORT_KEY = "SHORT";
  private static final String DURATION_LONG_KEY = "LONG";

  public MyModule(ReactApplicationContext reactContext) {
    super(reactContext);
  }

  @Override
  public String getName() {
    return "MyModule";
  }

  @Override
  public Map<String, Object> getConstants() {
    final Map<String, Object> constants = new HashMap<>();
    constants.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT);
    constants.put(DURATION_LONG_KEY, Toast.LENGTH_LONG);
    return constants;
  }

  @ReactMethod
  public void show(String message, int duration, Callback successCallback) {
      Toast.makeText(getReactApplicationContext(), message, duration).show();


      String str = null;

      try{
          Class.forName("com.mysql.jdbc.Driver").newInstance();
          Connection con= DriverManager.getConnection(
          "jdbc:mysql://localhost:3306/dgcis","root","root");

          Statement stmt=con.createStatement();
          ResultSet rs=stmt.executeQuery("select COUNTRY_NAME from exp_imp_brc limit 1;");
          while(rs.next())
          str = rs.getString(1);

          System.out.print(str);

          con.close();


      }catch(Exception e){ str = e.toString();}

      successCallback.invoke("santosh", str );

      }

}

1 个答案:

答案 0 :(得分:1)

找不到模块是您的类路径。也可能是,尽管项目知道该文件,但是构建脚本可能不在范围内。

将此添加到您的gradle依赖项

// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.5'

编辑:将mysql连接器版本更新为5.1.5,使其与1.7编译代码兼容。