android studio 做一个简单的登陆界面 连接mysql加载驱动失败(求救~~~)

kyrach 2016-03-15 09:50:59
贴上代码

package com.example.administrator.androidmysqltest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.mysql.jdbc.Connection;
import java.sql.DriverManager;


public class MainActivity extends Activity implements View.OnClickListener {
private JdbcUtil jdbc = new JdbcUtil();
private EditText name;
private EditText password;
private Button button;
private String sql;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

findInit();
initView();
OnClickListener();
}

public void findInit() {
name = (EditText) findViewById(R.id.name);
password = (EditText) findViewById(R.id.password);
button = (Button) findViewById(R.id.button);
}

protected void initView() {
}

public void OnClickListener() {
button.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
// jdbc.createConnection();//加载驱动
// sql = "";//登陆账户密码查询SQ语句
// jdbc.executeQuery(sql);//查询数据库
Connection con = null;
try {
Class.forName("org.gjt.mm.jdbc.Driver");// 加载驱动程序org.gjt.mm.mysql.Driver
con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/ch","root","123456");
Log.d("TEST", "加载驱动成功");
} catch (Exception e) {
Log.d("TEST", "加载驱动失败");
e.printStackTrace();
}
break;
default:
break;
}
}

}
————————————————————————————————
package com.example.administrator.androidmysqltest;

import android.util.Log;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Date;

public class JdbcUtil {
private Connection connection;
private ResultSet rs;
private Statement stmt;

public JdbcUtil() {
// createConnection();
}

//com.mysql.jdbc.Driver
public void createConnection() {
final String DRIVERNAME = "com.mysql.jdbc.Driver";
final String URL = "jdbc:mysql://localhost:3306/ch?useUnicode=true&characterEncoding=utf8";
final String USERNAME = "root";
final String PASSWORD = "";
try {
Class.forName(DRIVERNAME);//load driver
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);//create database connection
Log.d("TEST", "连接数据库成功!");
} catch (Exception e) {
System.out.println("failed to get a connection");
e.printStackTrace();
}
}

//查询
public void executeQuery(String sql) {
try {
if(connection==null){
createConnection();
}
if(stmt==null){
stmt = connection.createStatement();
}
rs = stmt.executeQuery(sql);

} catch (Exception e) {
Log.d("TEST", "查询失败");
e.printStackTrace();
}
}

//数据库插入、修改和删除
public int executeUpdate(String sql) {
int rows;
try {
if(connection==null){
createConnection();
}
if(stmt==null){
stmt = connection.createStatement();
}
rows = stmt.executeUpdate(sql);
} catch (Exception e) {
rows = -1;
e.printStackTrace();
Log.d("TEST", "数据库更新失败");
}
return rows;
}

//释放数据库资源
public void close(){
try {
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(connection!=null)
connection.close();
} catch (Exception e) {}
}

public ResultSet getRs() {
return rs;
}

public static void main(String[] args) {
//创建JdbcUtil对象
JdbcUtil jdbcUtil = new JdbcUtil();
String sql = "insert into account (username,password) values('xiaowang','12345')";//用户名 密码
int rows = jdbcUtil.executeUpdate(sql);
if(rows>0){
System.out.println("success to insert a record");
}else{
System.out.println("failed to insert a record");
}
jdbcUtil.close();
}
}
————————————————————————
*连接的是 Genymotion模拟器
出错信息如下:
03-15 13:36:23.295 13797-13797/? D/TEST: 加载驱动失败
03-15 13:36:23.295 13797-13797/? W/System.err: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
03-15 13:36:23.299 13797-13797/? W/System.err: Last packet sent to the server was 0 ms ago.
03-15 13:36:23.299 13797-13797/? W/System.err: at java.lang.reflect.Constructor.constructNative(Native Method)
03-15 13:36:23.299 13797-13797/? W/System.err: at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2120)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
03-15 13:36:23.299 13797-13797/? W/System.err: at java.lang.reflect.Constructor.constructNative(Native Method)
03-15 13:36:23.299 13797-13797/? W/System.err: at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
03-15 13:36:23.299 13797-13797/? W/System.err: at java.sql.DriverManager.getConnection(DriverManager.java:175)
03-15 13:36:23.299 13797-13797/? W/System.err: at java.sql.DriverManager.getConnection(DriverManager.java:209)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.example.administrator.androidmysqltest.MainActivity.onClick(MainActivity.java:62)
03-15 13:36:23.299 13797-13797/? W/System.err: at android.view.View.performClick(View.java:4204)
03-15 13:36:23.299 13797-13797/? W/System.err: at android.view.View$PerformClick.run(View.java:17355)
03-15 13:36:23.299 13797-13797/? W/System.err: at android.os.Handler.handleCallback(Handler.java:725)
03-15 13:36:23.299 13797-13797/? W/System.err: at android.os.Handler.dispatchMessage(Handler.java:92)
03-15 13:36:23.299 13797-13797/? W/System.err: at android.os.Looper.loop(Looper.java:137)
03-15 13:36:23.299 13797-13797/? W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5041)
03-15 13:36:23.299 13797-13797/? W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
03-15 13:36:23.299 13797-13797/? W/System.err: at java.lang.reflect.Method.invoke(Method.java:511)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-15 13:36:23.299 13797-13797/? W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-15 13:36:23.299 13797-13797/? W/System.err: at dalvik.system.NativeStart.main(Native Method)
03-15 13:36:23.299 13797-13797/? W/System.err: Caused by: android.os.NetworkOnMainThreadException
03-15 13:36:23.303 13797-13797/? W/System.err: at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
03-15 13:36:23.303 13797-13797/? W/System.err: at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
03-15 13:36:23.303 13797-13797/? W/System.err: at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
03-15 13:36:23.303 13797-13797/? W/System.err: at java.net.InetAddress.getAllByName(InetAddress.java:214)
03-15 13:36:23.303 13797-13797/? W/System.err: at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:243)
03-15 13:36:23.303 13797-13797/? W/System.err: at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
03-15 13:36:23.303 13797-13797/? W/System.err: at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2043)
03-15 13:36:23.303 13797-13797/? W/System.err: ... 21 more
...全文
423 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kyrach 2016-03-15
  • 打赏
  • 举报
回复
还是不行 我换成了172.0.0.1
sagittarius1988 2016-03-15
  • 打赏
  • 举报
回复
jdbc:mysql://localhost:3306/ch 这里的localhost换成你mysql的服务器ip

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧