1***@163.com
1***@163.com
  • 发布:2017-07-21 20:50
  • 更新:2017-07-22 10:25
  • 阅读:1465

您好,想问问通过native.js远程通过jdbc远程连接mysql数据库,已经离线打包导入了jdbc的jar包,还是连不上。

分类:Native.js

由于是一名刚入门的大二学生,不大了解下面是根据源码改的native.js代码
function show() {

var main = plus.android.runtimeMainActivity();
var url="jdbc:mysql://rm-uf66kxh65t4sbn14bo.mysql.rds.aliyuncs.com:3306/first";
var user="root";
var password="20170627**hhu";
//"plusready"事件触发时执行plus对象的方法
// ...
// 导入要用到的类对象
var Dri= plus.android.importClass("java.sql.DriverManager");
var res = plus.android.importClass("java.sql.ResultSet");
var con= plus.android.importClass("com.mysql.jdbc.Connection");
var sta = plus.android.importClass("com.mysql.jdbc.Statement");

plus.android.importClass("com.mysql.jdbc.Driver");
var Dr=new Dri();
var conn= Dr.getConnection(url, user, password); //链接数据库
var stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
var rs=stmt.executeQuery("select name from student");

  while(rs.next()) {  

    document.write(rs.getString(1));  
    document.write("<br >");  
  }  
   rs.close();      
   stmt.close();  
   conn.close();  

}

这是源码
package com.hl;

import java.sql.DriverManager;
import java.sql.ResultSet;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class AndroidMsql extends Activity {

@Override  
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  
    Button btn=(Button)findViewById(R.id.btn);  
    btn.setOnClickListener(new OnClickListener() {  

        @Override  
        public void onClick(View v) {  
             sqlCon();                
        }  
    });  

}  

private void mSetText(String str){  
     TextView txt=(TextView)findViewById(R.id.txt);  
     txt.setText(str);  
}  

private void sqlCon(){  
    try {  
        //Class.forName("com.mysql.jdbc.Driver");   
        com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
    try {  
        //jdbc:mysql://Android默认电脑主机IP 10.0.2.2或者你电脑的IP  
        String url ="jdbc:mysql://rm-uf66kxh65t4sbn14bo.mysql.rds.aliyuncs.com:3306/first";//链接数据库语句  
        Connection conn= (Connection) DriverManager.getConnection(url,"root","20170627**hhu"); //链接数据库  
        Statement stmt=(Statement) conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
        String sql="select name from student";//查询user表语句  
        ResultSet rs=stmt.executeQuery(sql);//执行查询  
        StringBuilder str=new StringBuilder();  
        while(rs.next()){  
            str.append(rs.getString(1)+"\n");   
        }  
        mSetText(str.toString());  

        rs.close();      
        stmt.close();  
        conn.close();  

    } catch (Exception e) {  
        e.printStackTrace();  
    }  

}  

}

2017-07-21 20:50 负责人:无 分享
已邀请:
1***@163.com

1***@163.com (作者)

已经找到错误了 调用实例的方法要得到返回值应该用 plus.android.invoke
如果单纯调用方法 不用返回值 可用“.”.

错误 var conn= Dr.getConnection(url, user, password);

正确 var conn= plus.android.invoke( Dr,"getConnection", url,user,password);

赵梦欢

赵梦欢 - 专注前端,乐于分享!

路子太野了,你这样直接把数据库的信息暴露出来,别人分分钟搞死你的数据库,你应该是后端写接口,前端通过ajax调用你的接口。

该问题目前已经被锁定, 无法添加新回复