转 https://www.cnblogs.com/jerrywublogs/p/7127641.html
在实际项目中,一般很少直接访问MySQL数据库,一般情况下会通过http请求将数据传送到服务端,然后在服务端连接mysql数据库。
在android 中,会通过使用Jdbc 连接MySQL 服务器
public class MySqlHelp { public static boolean InsertSql(String Bc,String lr,String rr,String TestDate) { com.yy.eye.lib.DB.MySqlSetting mySqlSetting=mDBUtil.queryFirstOrDefault(); String url_1="jdbc:mysql://127.0.0.1:3306/dbName"; String UserName_1="abc"; String pass_1="abc"; try { Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection cn= DriverManager.getConnection(url_1,UserName_1,pass_1); String sql = "INSERT INTO checkresult(bc,lf,ft,td,)Values("+Bc+","+lr+","+rr+","+TestDate")" ;
Statement st=(Statement)cn.createStatement(); result=st.execute(sql); result=true; cn.close(); st.close(); } catch (ClassNotFoundException e) { result=false; // e.printStackTrace(); } catch (SQLException e) { //e.printStackTrace(); result=false; } return result; }
}
需要注意的是使用jdbc需要赋予项目权限
在AndroidManifest.xml 中,添加
<uses-permission android:name="android.permission.INTERNET"/>
在调用Mysql时,需要使用线程
new Thread(new Runnable() { @Override public void run() { flag1= MySqlHelp.InsertSql(bc,lR,rR,dt); Message msg = Message.obtain(); msg.what = 0; Handler.sendMessage(msg); } }).start();
线程执行后,可以使用handle作信息处理
private Handler Handler = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.what == 0 ) { Toast.makeText(ViewTest.this, "提交成功", Toast.LENGTH_SHORT).show(); InitEye(); } } };
在build.gradle 的dependencies中添加
compile files('libs/mysql-connector-java-5.0.8-bin.jar')
程序包需要手动下载
其它参考:
Android 连接MySQL数据库并进行增删改查操作
转 https://blog.csdn.net/weixin_37730482/article/details/77984417
1.Android 连接MySQL数据库
public class DBOpenHelper {
private static String driver = "com.mysql.jdbc.Driver";//MySQL 驱动
private static String url = "jdbc:mysql://IP:3306/数据库";//MYSQL数据库连接Url
private static String user = "root";//用户名
private static String password = "root";//密码
/**
* 连接数据库
* */
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driver);//获取MYSQL驱动
conn = (Connection) DriverManager.getConnection(url, user, password);//获取连接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭数据库
* */
public static void closeAll(Connection conn, PreparedStatement ps){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 关闭数据库
* */
public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2.增删改查
public class DBService {
private Connection conn=null; //打开数据库对象
private PreparedStatement ps=null;//操作整合sql语句的对象
private ResultSet rs=null;//查询结果的集合
//DBService 对象
public static DBService dbService=null;
/**
* 构造方法 私有化
* */
private DBService(){
}
/**
* 获取MySQL数据库单例类对象
* */
public static DBService getDbService(){
if(dbService==null){
dbService=new DBService();
}
return dbService;
}
/**
* 获取要发送短信的患者信息 查
* */
public List<User> getUserData(){
//结果存放集合
List<User> list=new ArrayList<User>();
//MySQL 语句
String sql="select * from user";
//获取链接数据库对象
conn= DBOpenHelper.getConn();
try {
if(conn!=null&&(!conn.isClosed())){
ps= (PreparedStatement) conn.prepareStatement(sql);
if(ps!=null){
rs= ps.executeQuery();
if(rs!=null){
while(rs.next()){
User u=new User();
u.setId(rs.getString("id"));
u.setName(rs.getString("name"));
u.setPhone(rs.getString("phone"));
u.setContent(rs.getString("content"));
u.setState(rs.getString("state"));
list.add(u);
}
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
DBOpenHelper.closeAll(conn,ps,rs);//关闭相关操作
return list;
}
/**
* 修改数据库中某个对象的状态 改
* */
public int updateUserData(String phone){
int result=-1;
if(!StringUtils.isEmpty(phone)){
//获取链接数据库对象
conn= DBOpenHelper.getConn();
//MySQL 语句
String sql="update user set state=? where phone=?";
try {
boolean closed=conn.isClosed();
if(conn!=null&&(!closed)){
ps= (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1,"1");//第一个参数state 一定要和上面SQL语句字段顺序一致
ps.setString(2,phone);//第二个参数 phone 一定要和上面SQL语句字段顺序一致
result=ps.executeUpdate();//返回1 执行成功
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//关闭相关操作
return result;
}
/**
* 批量向数据库插入数据 增
* */
public int insertUserData(List<User> list){
int result=-1;
if((list!=null)&&(list.size()>0)){
//获取链接数据库对象
conn= DBOpenHelper.getConn();
//MySQL 语句
String sql="INSERT INTO user (name,phone,content,state) VALUES (?,?,?,?)";
try {
boolean closed=conn.isClosed();
if((conn!=null)&&(!closed)){
for(User user:list){
ps= (PreparedStatement) conn.prepareStatement(sql);
String name=user.getName();
String phone=user.getPhone();
String content=user.getContent();
String state=user.getState();
ps.setString(1,name);//第一个参数 name 规则同上
ps.setString(2,phone);//第二个参数 phone 规则同上
ps.setString(3,content);//第三个参数 content 规则同上
ps.setString(4,state);//第四个参数 state 规则同上
result=ps.executeUpdate();//返回1 执行成功
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//关闭相关操作
return result;
}
/**
* 删除数据 删
* */
public int delUserData(String phone){
int result=-1;
if((!StringUtils.isEmpty(phone))&&(PhoneNumberUtils.isMobileNumber(phone))){
//获取链接数据库对象
conn= DBOpenHelper.getConn();
//MySQL 语句
String sql="delete from user where phone=?";
try {
boolean closed=conn.isClosed();
if((conn!=null)&&(!closed)){
ps= (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1, phone);
result=ps.executeUpdate();//返回1 执行成功
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//关闭相关操作
return result;
}
}
---------------------
小白通过JDBC在AndroidStudio一步步来访问MYSQL数据库
Android Studio使用JDBC远程连接mysql的注意事项(附示例)