Android连接MySQL数据库(Android Studio环境下运行)

1.环境配置:

(1)Android Studio软件(附带可以运行正常测试)

(2)Mysql软件  

(3)Mysql对应的jar包.

2.详细步骤

(1)MySQL数据:如下图

Android连接MySQL数据库(Android Studio环境下运行)_第1张图片

MySQL库下面默认有个user用户表,创建一个新的用户(为了权限的使用))

Android连接MySQL数据库(Android Studio环境下运行)_第2张图片

MySQL中创建一个用户并为其设置权限.

Android连接MySQL数据库(Android Studio环境下运行)_第3张图片

代码使用本机的IP地址连接数据库,不能使用localhost进行

Android连接MySQL数据库(Android Studio环境下运行)_第4张图片

(1)创建工程(简单操作)

(2)为工程导入mysql.jar包,自行操作

项目结构就这样

Android连接MySQL数据库(Android Studio环境下运行)_第5张图片

代码实现:

(1)AndroidManifest.xml文件




    
        
            
                

                
            
        
    
    
    
    
    
    

注意增加了新的配置

数据库的时候用着两个

(2)布局文件,差个图片,自己导入就行哦




    


        

            

                
            

            

                
            

            

                

(3)主函数

package com.example.chen.myapplication;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private ImageView imageView;
    private TextView textView;
    private Button button;
    private RadioButton radioButton1;
    private RadioButton radioButton2;
    private RadioButton radioButton3;
    //连接数据库
    private String url="jdbc:mysql://192.168.65.99:3306/test";
    private String user="rootes";
    private String password="123456";
    PreparedStatement statement=null;
    Statement stat=null;
    Connection conn=null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView=(ImageView)findViewById(R.id.imageView);
        textView=(TextView)findViewById(R.id.textView);
        button=(Button)findViewById(R.id.button);
        button.setOnClickListener(this);
        radioButton1=(RadioButton)findViewById(R.id.radioButton1);
        radioButton2=(RadioButton)findViewById(R.id.radioButton2);
        radioButton3=(RadioButton)findViewById(R.id.radioButton3);
        radioButton1.setOnClickListener(this);
        radioButton2.setOnClickListener(this);
        radioButton3.setOnClickListener(this);
        //为按钮设置一个标记
        button.setTag(0);
        radioButton1.setTag(1);
        radioButton2.setTag(2);
        radioButton3.setTag(3);

    }
    @Override
    public void onClick(View v) {
        Integer id=(Integer)v.getTag();
        if(id==0) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                        java.sql.Connection cn= DriverManager.getConnection("jdbc:mysql://192.168.65.99/test","rootes","123456");
                        String sql="select name from test";
                    Statement st=(Statement)cn.createStatement();
                    ResultSet rs=st.executeQuery(sql);
                    while(rs.next()){
                        String mybook=rs.getString("name");
                        System.out.println(mybook);
                        Log.i("Mainactivity",mybook);
                    }
                    cn.close();
                    st.close();
                    rs.close();
                        System.out.println("连接数据库成功");
                    } catch (ClassNotFoundException e) {
                        System.out.println("连接数据库失败");
                        e.printStackTrace();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
            //把imageView转换成Bitmap
           // Bitmap bitmap=loadBitmapFromView(imageView);
            //获取图像对应的RGB值.,并存入数据库中
            //GetRGB(bitmap);
           // conn=getConnection();
            //把bitmap转换成为一个文件
            //InputPhoto(bitmap);
            //显示新的Bitmap图片
           // imageView.setImageBitmap(bitmap);
           /// System.out.println("取像");

        }else if(id==1){
            System.out.println("价格");

        }else if(id==2){
            System.out.println("营养");
        }else if(id==3){
            System.out.println("品种");
        }

    }
    ///获取图片的RGB值
    private void GetRGB(Bitmap bitmap) {
        int w=bitmap.getWidth();
        int h=bitmap.getHeight();
        StringBuffer sql=new StringBuffer();
        sql.append("insert into tb_rgb(x,y,r,g,b,rgb)values ");
        for(int i=1;i>16)&0xff;
                int g =( argb>>8)&0xff;
                int b =argb&0xff;
                int a =(argb>>24)&0xff;
                int rgb =(a<<24)|(r<<16)|(g<<8)|b;
                sql.append("("+j+","+i+","+r+","+j+","+b+","+rgb+"),");

              //  System.out.println("R="+r+",G="+g+",B="+b);
                bitmap.setPixel(j,i,Color.RED);
            }
        }
        //插入数据入库
       InsertSql(sql.toString());
        System.out.println("数据库插入成功");
    }

    //获取imageView中的图片
    private Bitmap loadBitmapFromView(ImageView imageView) {
        imageView.setDrawingCacheEnabled(true);
        imageView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
        imageView.setDrawingCacheBackgroundColor(Color.WHITE);
        int w = imageView.getWidth();
        int h = imageView.getHeight();
        Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmp);
        canvas.drawColor(Color.WHITE);
        //如果不设置canvas的画布为白色,则生成透明
        imageView.layout(0, 0, w, h);
        imageView.draw(canvas);
        return bmp;
    }
    //连接数据库
    public Connection getConnection(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection(url, user, password);
            System.out.println("数据库连接成功");
        } catch (Exception  e) {
            System.out.println("数据库连接失败");
            e.printStackTrace();
        }
        return conn;
    }
    public  void InsertSql(String sql){

        String sqls=sql.substring(0,sql.length()-1);
        conn=getConnection();//连接数据库
        System.out.println("连接数据库成功");
        try{
            stat=conn.createStatement();
            //stat.execute(sqls);
        }catch (Exception e){
            System.out.println("数据库插入失败");
            e.printStackTrace();
        }
    }
    //保存图片文件
    private void InputPhoto(Bitmap bitmap) {
        FileOutputStream fos;
        String imagePath="";
        try {
            boolean isHasSDCard = Environment.getExternalStorageState().equals(
                    android.os.Environment.MEDIA_MOUNTED);
            if (isHasSDCard) {
                File sdRoot = Environment.getExternalStorageDirectory();

                File file = new File(sdRoot, Calendar.getInstance().
                        getTimeInMillis() + ".png");
                System.out.println("文件路径"+file.toString());
                fos = new FileOutputStream(file);
                imagePath = file.getAbsolutePath();
            }else {
                throw new Exception("创建文件夹失败了");
            }
            bitmap.compress(Bitmap.CompressFormat.PNG,90,fos);
            fos.flush();
            fos.close();
          }catch (Exception e) {
            System.out.println("文件保存失败");
            e.printStackTrace();
        }
        imageView.destroyDrawingCache();
        System.out.println("保存文件成功");
    }

}

注意MySQL的连接操作必须放在子线程中才可以执行,不然运行不了,为什么原因暂时不知道,望高人指点一二

选择连接的用户必须选择刚才创建的有权限很高的用户,不然不可以哦.

运行结果

 

Android连接MySQL数据库(Android Studio环境下运行)_第6张图片

源码下载:https://download.csdn.net/download/hongfei568718926/11859551

你可能感兴趣的:(Android开发)