精华内容
下载资源
问答
  • MySQL创建数据库和创建数据表

    万次阅读 多人点赞 2019-10-20 23:44:40
    MySQL 创建数据库和创建数据表 MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。 在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。 一、数据库操作语言 数据库...

    MySQL 创建数据库和创建数据表

    MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。

    在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。

    一、数据库操作语言

    数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言。

    SQL 的主要功能是和数据库建立连接,进行增删改查的操作。SQL是关系型数据库管理系统的标准语言。

    SQL 语言的作用:

    1. 数据定义语言 DDL(Data Definition Language) 。用于创建数据库,数据表。

    2. 数据操作语言 DML(Data Manipulation Language) 。用于从数据表中插入、修改、删除数据。

    3. 数据查询语言 DQL(Data Query Language) 。用于从数据表中查询数据。

    4. 数据控制语言 DCL(Data Control Language) 。用来设置或修改数据库用户或角色的权限。

    使用 SQL 操作数据库时,所有的 SQL 语句都以分号结束。(切换数据库时可以不用分号)

    在 SQL 语句中,不区分大小写,编写 SQL 语句时可以根据情况用大小写的区别来增加可读性。

    二、创建数据库

    1. 连接 MySQL

    输入 mysql -u root -p 命令,回车,然后输入 MySQL 的密码(不要忘记了密码),再回车,就连接上 MySQL 了。

    mysql -u root -p

    最初,都是使用 root 用户登录,工作中如果一直用 root 用户登录,因为权限太大,风险是很大的,所以等创建好权限适合的用户后,就不要经常登录 root 用户了。

    2. 查看当前的数据库

    使用 show databases; 查看当前安装的 MySQL 中有哪些数据库。

    show databases;

    刚安装 MySQL 时,默认有四个数据库,information_schema,mysql,perfomance_schema,sys 。通常情况下,我们不会直接使用这四个数据库,但千万不要把这四个数据库删了,否则会带来很多不必要的麻烦。如果不小心删了,建议是重新安装 MySQL ,在重装之前把自己的数据迁移出来备份好,或者从其他服务器上迁移一个相同的数据库过来。

    3. 创建数据库

    使用 create database 数据库名; 创建数据库。

    create database MyDB_one;

    创建数据库成功后,数据库的数量变成了5个,多了刚才创建的 MyDB_one 。

    4. 创建数据库时设置字符编码

    使用 create database 数据库名 character set utf8; 创建数据库并设置数据库的字符编码。

    create database MyDB_two character set utf8;
    

    直接创建的数据库,数据库的编码方式是 MySQL 默认的编码方式 latin1 (单字节编码) ,通常我们会在数据库中存放中文数据,所以最好把数据库的编码方式设置成 utf-8 ,这样中文才能正常显示。

    create database MyDB_three charset utf8;

    character set 可以缩写成 charset ,效果是一样的。

    5. 查看和显示数据库的编码方式

    使用 show create database 数据库名; 显示数据库的创建信息。

    show create database MyDB_one;
    show create database MyDB_two;

    如果不知道一个数据库的编码方式是什么,可以使用 show create database 数据库名 来查看数据库的编码方式。可以看到刚才创建的 MyDB_one 的编码方式是 MySQL 的默认编码 latin1 ,MyDB_two 的编码方式是 utf-8 。

    当然,这种方式不能在创建的同时显示,只能查看一个已经存在的数据库的编码方式。

    6. 使用 alter database 数据库名 character set utf8; 修改数据库编码

    alter database MyDB_one character set utf8;

    如果一个数据库的编码方式不符合使用需求,可以进行修改。刚才创建的 MyDB_one 经过修改后,编码方式也变成了 utf-8 。

    7. 进入或切换数据库

    使用 use 数据库名 进入或切换数据库。

    use MyDB_one
    use MyDB_two;

    刚连接上 MySQL 时,没有处于任何一个数据库中,如果要使用某一个数据库,就需要进入到这个数据库中。

    use 数据库名 这个命令后面的分号可以省略,这是 SQL 语句中唯一可以省略分号的语句。

    8. 显示当前数据库 select database();

    select database();

    进入数据库中,可以使用 select database(); 来查看当前处于哪个数据库中。长时间操作数据库时,在很多数据库中来回切换后,查看当前的数据库,避免操作错了数据库。

    三、创建数据表

    1. 查看当前数据库中的表

    使用 show tables;查看当前数据库中有哪些表。

    show tables;
    

    在刚才创建的数据库 MyDB_one 中,还没有创建任何表,所以当前是空的。

    2. 创建表

    使用 create table 表名(字段1 字段类型,字段2 字段类型,字段3 字段类型,…); 来创建一张表。

    create table Phone_table(pid INT, name CHAR(20), price INT);

    在 MyDB_one 中创建了一个叫 Phone_table 的数据表,这张表有三个字段 pid,name,price 。为了增加 SQL 的可读性,字段名我用的是小写,字段类型用大写。

    3. 显示表信息

    用 show create table 表名; 来显示已创建的表的信息。

    show create table Phone_table;

    使用 show create table 表名;  可以显示表的字段信息, MySQL 的引擎,和默认的字符编码等信息。与显示数据库信息一样,show 只能显示已经创建了的数据表的信息,不能在创建的同时显示信息。

    如果想更好地展示表的字段信息,可以使用 desc 表名; 来显示表的字段信息。

    4. 给表增加字段

    使用 alter table 表名 add 字段名 数据类型; 为已存在的表添加一个新字段。

    alter table Phone_table add color CHAR(20);

    添加后,刚才的表中多了一个字段,新增成功。

    5. 删除表的字段

    使用 alter table 表名 drop 字段名; 删除一个表中已存在的字段。

    alter table Phone_table drop price;

    删除字段后,表中不再有该字段。

    6. 修改字段的数据类型

    使用 alter table 表名 modify 字段名 数据类型; 修改表中现有字段的数据类型。

    alter table Phone_table modify name VARCHAR(12);

    修改之后,该字段的数据类型发生改变。

    7. 修改字段的数据类型并且改名

    使用 alter table 表名 change 原字段名 新字段名 数据类型; 修改表中现有字段的字段名和类型。

    alter table Phone_table change name pname CHAR(18);

    现在,将表的 name 改成了 pname ,同时修改了 pname 的数据类型。

    四、MySQL 常用字段类型

    一个数据表是由若干个字段组成的,一个表十几个字段也很正常,每个字段表示不同的信息,需要使用不同类型的数据。

    所以在创建表的时候,要为每个字段指定适合的数据类型。

    MySQL 中常用的字段类型有以下这些:

    1. 整数类型

    数据类型 数据范围
    TINYINT -128 -- 127
    SMALLINT -32768 -- 32767
    MEDIUMINT -2^23 -- 2^23-1
    INT -2^31 -- 2^31-1
    BIGINT -2^63 -- 2^63-1

    2. 字符串类型

    数据类型 字节范围 用途
    CHAR(n) 0 -- 255字节 定长字符串
    VARCHAR(n) 0 -- 65535字节 变长字符串
    TEXT 0 -- 65535字节 长文本数据
    LONGTEXT 0 -- 2^32-1字节 极大文本数据
    BLOB 0 -- 65535字节 二进制长文本数据
    LONGBLOB 0 -- 2^32-1字节 二进制极大文本数据

    3. 小数类型

    m 表示浮点数的总长度,n 表示小数点后有效位数。

    数据类型 数据用法 数据范围
    Float Float(m,n) 7位有效数
    Double Double(m,n) 15位有效数
    Decimal Decimal(m,n) 28位有效数

    4. 时间类型

    数据类型 格式 用途
    DATE YYYY-MM-DD 日期
    TIME HH:MM:SS 时间
    YEAR YYYY 年份
    DATETIME YYYY-MM-DD HH:MM:SS 日期和时间
    TIMESTAMP 10位或13位整数(秒数) 时间戳

    5. 枚举类型

    enum(枚举值1,枚举值2,...)

    枚举类型只能在列出的值中选择一个,如性别。

     

     

    展开全文
  • Java连接MySQL数据库步骤

    万次阅读 多人点赞 2019-08-31 17:10:47
    Java连接MySQL数据库步骤 声明,只推荐你看代码学会我的步骤,逻辑,还有用的所有方法 第一, ​ 安装mysql数据库配置(https://www.jianshu.com/p/ea4accd7afb4),安装还有配置教程,按照步骤来肯定没错,里面是...

    Java连接MySQL数据库步骤

    声明,只推荐你看代码学会我的步骤,逻辑,还有用的所有方法

    第一,

    ​ 安装mysql数据库配置(https://www.jianshu.com/p/ea4accd7afb4),安装还有配置教程,按照步骤来肯定没错,里面是win10的mysql解压版安装教程,设置账号密码是一定要注意 :账号一般为root,密码一般为 123456 ,如果你要更改的话一定要记住,因为后面连接需要用到(切记),如果忘了会很麻烦。

    第二,

    ​ 如果是新手的话推荐学一下mysql的语法,认真的话一个星期学会绝对没问题(菜鸟教程网站),学会基本的查询当前电脑有的数据库,使用数据库,创建数据库,创建表,查看数据库中的表,还有对表的增删改查语法,新手不推荐使用视图软件,要记住操作mysql的代码,可以先在 cmd 黑框框中写操作数据库的代码。

    如果要用视图软件的话推荐下一个navicat破解版,自己用可以,不能商用。

    第三,

    ​ 下来就要用java编译器连接数据库了(java连接数据库又叫JDBC)。

    mysql提供的第三方java包,里面配置了连接java连接mysql的默认配置和驱动

    链接:https://pan.baidu.com/s/1Z_ztiTEGloX7r3ilZoZsCg
    提取码:0f1s

    创建项目->

    在这里插入图片描述

    创建文件夹起名为lib(把上面下载的包复制到lib文件夹下,直接复制粘贴就好了)->

    在这里插入图片描述

    鼠标右击复制过来的包导入项目导为jar包(在后面写连接代码时可以直接用)->

    在这里插入图片描述
    在这里插入图片描述

    导入成功是这样子
    在这里插入图片描述

    创建两个包,一个存放连接数据库的代码,一个存放数据库中的表信息(pojo)

    com.pojo在这个包里创建的类用来存放你的表中字段,存放实体类,必须满足javaBean(一个表就是一个类,类中属性就是表中字段)
    在这里插入图片描述

    连接步骤(这个很重要)(代码中都有注释):

    1.导jar包,前面已经导过了

    2.在连接类里写代码,加载mysql驱动(要写在代码块里,因为要连接必须最先加载驱动),代码块在加载类时就执行,在构造方法之前(注意是代码块{},不是方法)

    //连接信息	
    private String userName = "root";//这里是你最开始刚下载mysql是输入的账号
    	private String password = "123456";//这里是你最开始mysql设置的密码,
    	private String url = "jdbc:mysql://localhost:3306/testdatabase";
    //数据库连接信息,
    //第一个是java连接数据库协议,中间的是要连接的ip地址和端口号,localhost是本地ip,后面的是你要连接的数据库的名字,我要连接数据库的名字叫testdatabase
    	
    
    
    {
    		try {
        	//这里不用更改,如果你要连的不是mysql的话再换这个括号内的代码
    			Class.forName("com.mysql.jdbc.Driver");
    			System.out.println("驱动加载成功!");
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			System.out.println("加载失败!");
    			e.printStackTrace();
    		}
    
    }

    3.创建连接数据库(这里在构造方法里连接)

    public DataBaseConnection() {
    		// TODO Auto-generated constructor stub
    		try {
    			this.connection =  DriverManager.getConnection(url, userName, password);//把上面的三个属性传过来,应该就连接成功了,不成功的话应该就是你的账号密码不正确
    			System.out.println("数据库连接成功!");
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			System.out.println("连接失败!");
    		}
    	}

    4.第四步就是操作数据库了

    这里写一个往数据库里增加数据的代码

    创建方法名叫insert

    先想步骤

    ​ 1.写sql语句(就是你们在菜鸟教程里学的sql语句),菜鸟教程是个非常好的网站

    ​ 2.从连接中获得操作数据库句柄

    ​ 3.设置参数

    ​ 4.就是执行sql语句了

    //这里传一个类对象参数Emp emp,就相当于String str 差不多
    //都是引用数据类型,类,数组,接口
    public void insert(Emp emp){
    		//1.写sql语句
    		String str = "INSERT emp VALUES (?,?,?,?,?,?,?,?)";
    		PreparedStatement ps = null;
    		//2.获取操作数据库句柄
    		try {
    			//把操作数据库返回的结果保存到ps中
    			ps = connection.prepareStatement(str);

    		//3.设置参数
    		ps.setInt(1, emp.getEmpno());
    		ps.setString(2, emp.getEname());
    		ps.setString(3, emp.getJob());
    		ps.setInt(4, emp.getMgr());
    		ps.setDate(5, emp.getDate());
    		ps.setInt(6, emp.getSal());
    		ps.setInt(7, emp.getComm());
    		ps.setInt(8, emp.getDeptno());
    		
    		//4.执行sql语句
    		int len = ps.executeUpdate();
    		System.out.println("修改成功,共影响了"+ len +"行!");
    	} catch (SQLException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}finally{
    		if(ps != null){
    			try {
    				ps.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    
    	//关闭数据库的方法
    	public void closeConnection(){
    		if(connection != null){
    			try {
    				connection.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    }
    

    我的Emp类,就是我存放数据库中emp表中字段的类(你要按照你的数据库中字段来创建类)

    ​ private Integer empno;//因为Integer类型可以判断是否为空
    ​ private String ename;
    ​ private String job;
    ​ private Integer mgr;
    ​ private Date hiredate;
    ​ private Integer sal;
    ​ private Integer comm;
    ​ private Integer deptno;

    public Emp() {
    	// TODO Auto-generated constructor stub
    }
    
    //创建有参构造方法,方便赋值
    public Emp(Integer empno, String ename, String job, Integer mgr, Date hiredate, Integer sal, Integer comm,
    		Integer deptno) {
    	super();
    	this.empno = empno;
    	this.ename = ename;
    	this.job = job;
    	this.mgr = mgr;
    	this.hiredate = hiredate;
    	this.sal = sal;
    	this.comm = comm;
    	this.deptno = deptno;
    }
    
    
    public Integer getEmpno() {
    	return empno;
    }
    
    public void setEmpno(Integer empno) {
    	this.empno = empno;
    }
    
    public String getEname() {
    	return ename;
    }
    
    public void setEname(String ename) {
    	this.ename = ename;
    }
    
    public String getJob() {
    	return job;
    }
    
    public void setJob(String job) {
    	this.job = job;
    }
    
    public Integer getMgr() {
    	return mgr;
    }
    
    public void setMgr(Integer mgr) {
    	this.mgr = mgr;
    }
    
    public Date getHiredate() {
    	return hiredate;
    }
    
    public void setHiredate(Date hiredate) {
    	this.hiredate = hiredate;
    }
    
    public Integer getSal() {
    	return sal;
    }
    
    public void setSal(Integer sal) {
    	this.sal = sal;
    }
    
    public Integer getComm() {
    	return comm;
    }
    
    public void setComm(Integer comm) {
    	this.comm = comm;
    }
    
    public Integer getDeptno() {
    	return deptno;
    }
    
    public void setDeptno(Integer deptno) {
    	this.deptno = deptno;
    }
    //重写toString方法,方便测试,因为输出的是一个对象的话,java默认调用toString方法
    @Override
    public String toString() {
    	return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + ", date=" + hiredate
    			+ ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + "]";
    }

    最后创建一个测试类(Test),包含main方法,在main方法里写

    在这里插入图片描述

    
    
    	DataBaseConnection dbs = null;
    
    try{
    
    	//创建连接数据库类对象
    
    	dbs = new DataBaseConnection();
    
    	//创建你的表类对象,表类对象就是你存放在pojo中的类,存放表中字段的类,例如我的类为Emp
    
    	//把类中的属性赋值
    
    	Emp emp = new Emp8889, "刘备", "股东", 0, new    							Date(System.currentTimeMillis()), 110, 1000000, 100);                   
    
    	//调用你写的insert类,里面把类对象传进去
    
    	 dbs.insert(emp);
    
    }finally{
    
    //奥,对了,为了防止资源浪费,不管你程序执没执行成功,你都必须关闭数据库
    
    	//需要在你的连接类中写一个关闭数据库的方法
    
    	//上面的代码中我又添加上了,就不用你写了
    
    	dbs.closeConnection();
    
    }

    最后你再查看你数据库中表中数据应该就插入了一条记录。

    ​ 再次强调,只推荐你看代码学会我的步骤,逻辑,还有用的所有方法,千万不要拷贝拿去用,因为就算你跟我的一模一样,你还是不懂。

    ​ 如果学习过程中有什么麻烦就请加我qq交流。

    作者qq:1271224158

    展开全文
  • JavaWeb连接MySQL数据库步骤

    千次阅读 2019-10-22 22:30:05
    JavaWeb连接MySQL数据库步骤 1. 启动TomCat和MySQL服务。 2. 打开MySQL进行数据库的连接 **3.**现在开始进行JavaWeb连接MySQL数据库 3.1 加载驱动程序 //1.加载驱动程序 //driver:lib com.mysql.jdbc.Driver /...

    JavaWeb连接MySQL数据库步骤

    1. 启动TomCat和MySQL服务。

    2. 打开MySQL进行数据库的连接

    3. 现在开始进行JavaWeb连接MySQL数据库

    3.1 加载驱动程序

    			//1.加载驱动程序
                //driver:lib com.mysql.jdbc.Driver
                //如果出错,需要将mysql驱动放置在tomcat的lib目录下
                //更好的方式是:在项目中设置mysql驱动
    			String driverName="com.mysql.jdbc.Driver";
                Class.forName(driverName);
                out.println("step1:驱动加载成功!<br/>");
    

    3.2 获取数据库连接

    			//2.获取数据库连接
                //JDBC URI
                //jdbc:mysql://hostname:port/dbname
                String url="jdbc:mysql://127.0.0.1:3306/webcourse";
                String dbuser="root";//根据自己实际设置
                String dbpass="";//根据自己实际设置
                Connection con= DriverManager.getConnection(url,dbuser,dbpass);
                out.println("setp2:获取数据库连接成功!<br/>");
    

    3.3 准备SQL语句,访问数据库

    			//3.准备SQL语句,访问数据库
                String sql="select * from users";
                Statement statement=con.createStatement();
                ResultSet rs=statement.executeQuery(sql);
                StringBuilder builder=new StringBuilder();
                while(rs.next()){
                    builder.append(
                            rs.getInt("id")+" "+
                            rs.getString("username")+" "+
                            rs.getString("password")+"<br/>");
                }
                out.println(builder.toString());
    

    4. 这样JavaWeb连接MySQL数据库就连接成功了!

    展开全文
  • Android 连接Mysql数据库步骤1.新建项目project2.运行,显示helloworld3.复制mysql-connector-java-5.1.48.jar,到libs文件夹4. Add as library5. 搭建简单的xml显示框架,定义框架中的VIEW6.定义Button的...

    Android 连接Mysql数据库步骤

    1.新建项目project

    在这里插入图片描述

    2.运行,显示helloworld

    在这里插入图片描述

    3.复制mysql-connector-java-5.1.48.jar,到libs文件夹


    在这里插入图片描述

    4. Add as library

    在这里插入图片描述

    5. 搭建简单的xml显示框架,定义框架中的VIEW

    public class MainActivity extends AppCompatActivity {
        private Button Btsearch;
        private TextView Texttime;
        private TextView Textdisplay;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Btsearch = findViewById(R.id.search);
            Texttime = findViewById(R.id.time);
            Textdisplay = findViewById(R.id.text_display);
            Btsearch.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    
                }
            });
        }
    }
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="数据库操作DEMO"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="30dp"
        android:gravity="center"/>
    <TextView
        android:id="@+id/time"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:text="2020-05-21"
        android:textColor="@color/colorAccent"
        android:textSize="13dp"
        android:gravity="center"/>
    
    <Button
        android:id="@+id/search"
        android:layout_width="120dp"
        android:layout_height="100dp"
        android:text="查询"
    
        />
    <TextView
        android:id="@+id/text_display"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:background="@color/colorPrimaryDark"
        android:text="Hello World!"
        android:textColor="#BEE8B6"
        android:textSize="20dp"
        android:layout_marginTop="20dp"
        android:paddingTop="20dp"
        />
    

    6.定义Button的setOnClickListener 事件(Toast)

    public void onClick(View v) {
        Toast toast = Toast.makeText(getApplicationContext(), "查询按钮被点击", Toast.LENGTH_SHORT);
        toast.show();
    }
    

    7.连接数据库

    7.1寻找内存(需要try)ClassNotFoundException

    Class.forName("com.mysql.jdbc.Driver");
    

    7.2连接数据库(需要try)SQLException

    java.sql.Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","****","123456");
    

    7.3连接失败,异常Caused by: java.net.SocketException: Permission denied

    这是一个经典错误, Socket不能对外连接,错误不会被报出,调试的时候,能看到Exception, 一般是抛出 java.net.socketexception permission denied这个异常。
    只要你的程序版想联网,就会抛出这个异常,最终联网失败。
    原因是: 需要访权问到网络必须要有权限,
    在AndroidManifest.xml中,需要进行如下配置:

    <uses-permission android:name="android.permission.INTERNET" />
    

    7.4连接失败,还是异常Caused by: android.os.NetworkOnMainThreadException

    google不再允许网络请求(HTTP、Socket)等相关操作直接在Main Thread类中,所以和network有关的操作一般比较耗时,把这部分操作放到一个子线程里,然后用Handler消息机制与主线程通信.

    7.5.给数据库操作加一个线程(连接数据库成功)

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                System.out.println("ClassforName成功");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.out.println("ClassforName失败");
            }
            try {
                java.sql.Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                cn.close();
                System.out.println("Connection连接数据库成功");
            } catch (SQLException e) {
                e.printStackTrace();
                System.out.println("Connection连接数据库失败");
            }
        }
    }).start();
    

    8.操作select数据库查找功能

    8.1.建立一个数据操作对象

    Statement st =cn.createStatement();
    

    8.2.写查询SQL语句,执行查询SQL语句executeQuery()

    ResultSet 是java中执行select后,返回的结果集类。
    rs 就是结果集的变量。

    这是利用来Java JDBC操作数据库源的写法。
    st 实际是 Statement 对象
    sql 是SQL语言,一百种用于操作数据库的语度言
    st.executeQuery(sql);是执行这条知sql语言(例如: 从数据库中读取一些道信息)
    ResultSet rs=st.executeQuery(sql);
    ResultSet rs 存放的是从数据库中,返回来的数据结果。

    String sql = "select B_Name from book";
    ResultSet rs=st.executeQuery(sql);
    

    8.3.得到查询SQL结果

    while (rs.next()){
        String mybook=rs.getString("B_Name");
        System.out.println(mybook);
    }
    

    8.4.建立handler (不能建立在Thread里面)

    如果handler建立在线程里面,会报错
    Can’t create handler inside thread that has not called Looper.prepare()

    private Handler myhandler =new Handler(){
        public void handleMessage(Message msg){
            if(msg.what!=0){
                Textdisplay.setText(text);
            }
        }
    };
    

    8.5.通过handler返回结果显示在xml里

    Integer i =0;
    while (rs.next()){
        String mybook=rs.getString("B_Name");
        System.out.println(mybook);
        i++;
        if(i==1){
            text=mybook;
        }else {
            text=text+mybook+'\n';
        }
        myhandler.sendEmptyMessage(1);
    }
    

    9.操作insert数据库插入功能

    9.1.Xml建立相应的editText

    9.2.editText 定义控件,提取内容

    id.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
    	id=s.toString();
        }
    });
    

    9.3.插入按钮的监听事件

    注意异常:
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘???’ in ‘field list’
    可以用
    System.out.print(sql);先将你的语句输出,这样就很容易发现有没有错误。

    Btinsert.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"插入按钮点击",Toast.LENGTH_SHORT).show();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try{
                        Class.forName("com.mysql.jdbc.Driver");
                        Connection cn =DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                        System.out.println("插入数据库Connection连接数据库成功");
                        Statement st = cn.createStatement();
                        String sql ="insert into book values("+id+",'"+name+"','小明','北京出版社','2020-05-21')";
                        System.out.println(sql);
                        st.execute(sql);
                        System.out.println("插入数据库成功");
                        text="插入"+name+"数据库成功";
                        myhandler.sendEmptyMessage(2);
                    } catch (ClassNotFoundException | SQLException e) {
                        System.out.println("插入数据库失败");
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    });
    

    10.更新update数据库更新功能

    10.1.Xml建立相应的editText,Button

    10.2.editText 定义控件,提取内容

    10.3.更新按钮的监听事件

    Btupdate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"更新按钮点击",Toast.LENGTH_SHORT).show();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                        Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                        System.out.println("更新数据库Connection连接数据库成功");
                        Statement st = cn.createStatement();
                        String sql = "update book set B_Author='"+pname+"' where B_Name='"+name+"'";
                        System.out.println(sql);
                        st.execute(sql);
                        System.out.println("更新成功");
                        text="更新"+name+"的作者为"+pname+"成功";
                        myhandler.sendEmptyMessage(3);
                    } catch (ClassNotFoundException | SQLException e) {
                        System.out.println("更新失败");
                        e.printStackTrace();
                    }
    
                }
            }).start();
        }
    });
    
    

    11.删除delete数据库更新功能

    11.1.Xml建立相应的Button

    11.2.editText 定义控件,提取内容

    11.3.更新按钮的监听事件

    Btupdate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"更新按钮点击",Toast.LENGTH_SHORT).show();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                        Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                        System.out.println("更新数据库Connection连接数据库成功");
                        Statement st = cn.createStatement();
                        String sql = "delete from book where set B_Author='"+name+"'";
                        System.out.println(sql);
                        st.execute(sql);
                        System.out.println("删除成功");
                        text="删除书名为"+name+"成功";
                        myhandler.sendEmptyMessage(3);
                    } catch (ClassNotFoundException | SQLException e) {
                        System.out.println("删除失败");
                        e.printStackTrace();
                    }
    
                }
            }).start();
        }
    });
    

    12.安卓连接数据库增删查更操作代码(简易全功能版)

    12.1.MainActivity.java

    package com.example.mysql_demo;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class MainActivity extends AppCompatActivity {
        private Button Btsearch,Btinsert,Btupdate,Btdelete;
        private EditText editid,editname,editpname;
        private TextView Texttime;
        private TextView Textdisplay;
        private String text,id,name,pname;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Btsearch = findViewById(R.id.search);
            Btinsert = findViewById(R.id.insert);
            Btupdate =findViewById(R.id.update);
            Btdelete = findViewById(R.id.delete);
            editid = findViewById(R.id.isbn);
            editname = findViewById(R.id.b_name);
            editpname = findViewById(R.id.p_name);
            Texttime = findViewById(R.id.time);
            Textdisplay = findViewById(R.id.text_display);
    //textview滑动条
    	Textdisplay.setMovementMethod(ScrollingMovementMethod.getInstance());
            //查询按钮点击事件
            Btsearch.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast toast = Toast.makeText(getApplicationContext(), "查询按钮被点击", Toast.LENGTH_SHORT);
                    toast.show();
                    text = "查询结果为:\n";
                    //建一个子线程 数据库操作属于网络操作,不能用UI线程
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                //第一步  寻找这个驱动,JVM加入内存
                                Class.forName("com.mysql.jdbc.Driver");
                                System.out.println("ClassforName成功");
                                //第二步  通过connection数据库建立链接对象
                                java.sql.Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                                System.out.println("Connection连接数据库成功");
                                //第三步 通过cn链接对象 创建一个statement对象,操作对象
                                Statement st =cn.createStatement();
                                //第四步 写一个SQL语句
                                String sql = "select B_Name from book";
                                //第五步 执行SQL语句,返回结果集到rs对象
                                //statement类的executeQuery()方法来下达select指令以查询数据库
                                ResultSet rs=st.executeQuery(sql);
                                System.out.println(rs);
                                //第六步 返回结果集得到字符串,某一列
    //                            Integer i =0;
    
                                while (rs.next()){
                                    String mybook=rs.getString("B_Name");
                                    System.out.println(mybook);
    //                                i++;
    //                                if(i==1){
    //                                    text=mybook;
    //                                }else {
                                        text=text+mybook+'\n';
    //                                }
                                    myhandler.sendEmptyMessage(1);
                                }
                              //class 异常
                            } catch (ClassNotFoundException e) {
                                e.printStackTrace();
                                System.out.println("ClassforName失败");
                                //Connection 异常
                            }  catch (SQLException e) {
                                e.printStackTrace();
                                System.out.println("Connection连接数据库失败");
                            }
                        }
                    }).start();
    
                }
            });
            //插入按钮事件
            Btinsert.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(),"插入按钮点击",Toast.LENGTH_SHORT).show();
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try{
                                Class.forName("com.mysql.jdbc.Driver");
                                Connection cn =DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                                System.out.println("插入数据库Connection连接数据库成功");
                                Statement st = cn.createStatement();
                                String sql ="insert into book values("+id+",'"+name+"','小明','河南出版社','2020-05-21')";
                                System.out.println(sql);
                                st.execute(sql);
                                System.out.println("插入成功");
                                text="插入"+name+"数据库成功";
                                myhandler.sendEmptyMessage(2);
                            } catch (ClassNotFoundException | SQLException e) {
                                System.out.println("插入失败");
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
            });
            //更新数据库
            Btupdate.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(),"更新按钮点击",Toast.LENGTH_SHORT).show();
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                Class.forName("com.mysql.jdbc.Driver");
                                Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                                System.out.println("更新数据库Connection连接数据库成功");
                                Statement st = cn.createStatement();
                                String sql = "update book set B_Author='"+pname+"' where B_Name='"+name+"'";
                                System.out.println(sql);
                                st.execute(sql);
                                System.out.println("更新成功");
                                text="更新"+name+"的作者为"+pname+"成功";
                                myhandler.sendEmptyMessage(3);
                            } catch (ClassNotFoundException | SQLException e) {
                                System.out.println("更新失败");
                                e.printStackTrace();
                            }
    
                        }
                    }).start();
                }
            });
            //删除数据库
            Btdelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(),"删除按钮点击",Toast.LENGTH_SHORT).show();
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                Class.forName("com.mysql.jdbc.Driver");
                                Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                                System.out.println("删除数据库Connection连接数据库成功");
                                Statement st = cn.createStatement();
                                String sql = "delete from book where B_Name='"+name+"'";
                                System.out.println(sql);
                                st.execute(sql);
                                System.out.println("删除成功");
                                text="删除书名为"+name+"成功";
                                myhandler.sendEmptyMessage(4);
                            } catch (ClassNotFoundException | SQLException e) {
                                System.out.println("删除失败");
                                e.printStackTrace();
                            }
    
                        }
                    }).start();
                }
            });
            //id文本框输入事件
            editid.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
    
                @Override
                public void afterTextChanged(Editable s) {
    
                    Textdisplay.setText("输入结束后的内容为 [" + s.toString()+" ] 即将显示在屏幕上");
                    id=s.toString();
                }
            });
            //图书文本框输入事件
            editname.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
    
                @Override
                public void afterTextChanged(Editable s) {
                    Textdisplay.setText("输入结束后的内容为 [" + s.toString()+" ] 即将显示在屏幕上");
                    name = s.toString();
                }
            });
            //作者文本框输入事件
            editpname.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
    
                @Override
                public void afterTextChanged(Editable s) {
                    Textdisplay.setText("输入结束后的内容为 [" + s.toString()+" ] 即将显示在屏幕上");
                    pname = s.toString();
                }
            });
        }
    
    
        private Handler myhandler =new Handler(){
            public void handleMessage(Message msg){
                if(msg.what==1){
                    Textdisplay.setText(text);
                }if (msg.what == 2){
                    Textdisplay.setText(text);
                }if (msg.what == 3){
                    Textdisplay.setText(text);
                }if(msg.what == 4){
                    Textdisplay.setText(text);
                }
            }
        };
    }
    

    12.2.activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="20dp"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="数据库操作DEMO"
            android:textColor="@color/colorPrimaryDark"
            android:textSize="30dp"
            android:gravity="center"/>
        <TextView
            android:id="@+id/time"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:text="2020-05-21"
            android:textColor="@color/colorAccent"
            android:textSize="13dp"
            android:gravity="center"/>
        <EditText
            android:id="@+id/isbn"
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:hint="ISBM"/>
        <EditText
            android:id="@+id/b_name"
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:hint="图书名字"/>
        <EditText
            android:id="@+id/p_name"
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:hint="作者名字"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal">
        <Button
            android:id="@+id/search"
            android:layout_width="80dp"
            android:layout_height="match_parent"
            android:text="查询"
            />
        <Button
            android:id="@+id/insert"
            android:layout_width="80dp"
            android:layout_height="match_parent"
            android:text="插入"
            />
        <Button
            android:id="@+id/update"
            android:layout_width="80dp"
            android:layout_height="match_parent"
            android:text="更新"
            />
        <Button
            android:id="@+id/delete"
            android:layout_width="80dp"
            android:layout_height="match_parent"
            android:text="删除"
            />
        </LinearLayout>
        <TextView
            android:id="@+id/text_display"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:background="@color/colorPrimaryDark"
            android:text="Hello World!"
            android:textColor="#BEE8B6"
            android:textSize="20dp"
            android:layout_marginTop="20dp"
            android:paddingTop="20dp"
    android:scrollbars="vertical"
            />
    
    </LinearLayout>
    

    在这里插入图片描述

    12.3.AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.mysql_demo">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-permission android:name="android.permission.INTERNET" />
    </manifest>
    

    13 代码修改(精简)

    13.1.修改OnClickListener为接口实现,重写OnClick

    public class MainActivity extends AppCompatActivity implements View.OnClickListener
    
    protected void onCreate(Bundle savedInstanceState) {
    //第一种myclick实现 用 implements OnclickListener
    //所有用this代替
    Btsearch.setOnClickListener(this);
    Btinsert.setOnClickListener(this);
    Btupdate.setOnClickListener(this);
    Btdelete.setOnClickListener(this);
    //设置Tag标签为1,标识查询
    //1--查询 2--插入 3--更新 4--删除
    Btsearch.setTag(1);
    Btinsert.setTag(2);
    Btupdate.setTag(3);
    Btdelete.setTag(4);
    }
    
    
    
    @Override
    public void onClick(View v) {
        //由于多个按钮作用不太一样,所以先识别Tag标签来区分每个按钮,由于Tag为object对象,所以需要强制装换Integer
        //1--查询 2--插入 3--更新 4--删除
        Integer tagid = (Integer) v.getTag();
        if(tagid==1){
            Toast toast = Toast.makeText(getApplicationContext(), "查询按钮被点击", Toast.LENGTH_SHORT);
            toast.show();
            text = "查询结果为:\n";
            //建一个子线程 数据库操作属于网络操作,不能用UI线程
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        //第一步  寻找这个驱动,JVM加入内存
                        Class.forName("com.mysql.jdbc.Driver");
                        System.out.println("ClassforName成功");
                        //第二步  通过connection数据库建立链接对象
                        java.sql.Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                        System.out.println("Connection连接数据库成功");
                        //第三步 通过cn链接对象 创建一个statement对象,操作对象
                        Statement st =cn.createStatement();
                        //第四步 写一个SQL语句
                        String sql = "select B_Name from book";
                        //第五步 执行SQL语句,返回结果集到rs对象
                        //statement类的executeQuery()方法来下达select指令以查询数据库
                        ResultSet rs=st.executeQuery(sql);
                        System.out.println(rs);
                        //第六步 返回结果集得到字符串,某一列
                        while (rs.next()){
                            String mybook=rs.getString("B_Name");
                            System.out.println(mybook);
                            text=text+mybook+'\n';
                            myhandler.sendEmptyMessage(1);
                        }
                        //class 异常
                    } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                        System.out.println("ClassforName失败");
                        //Connection 异常
                    }  catch (SQLException e) {
                        e.printStackTrace();
                        System.out.println("Connection连接数据库失败");
                    }
                }
            }).start();
    
        }if(tagid==2){
            Toast.makeText(getApplicationContext(),"插入按钮点击",Toast.LENGTH_SHORT).show();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try{
                        Class.forName("com.mysql.jdbc.Driver");
                        Connection cn =DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                        System.out.println("插入数据库Connection连接数据库成功");
                        Statement st = cn.createStatement();
                        String sql ="insert into book values("+id+",'"+name+"','小明','河南出版社','2020-05-21')";
                        System.out.println(sql);
                        st.execute(sql);
                        System.out.println("插入成功");
                        text="插入"+name+"数据库成功";
                        myhandler.sendEmptyMessage(2);
                    } catch (ClassNotFoundException | SQLException e) {
                        System.out.println("插入失败");
                        e.printStackTrace();
                    }
                }
            }).start();
        }
        if(tagid==3){
            Toast.makeText(getApplicationContext(),"更新按钮点击",Toast.LENGTH_SHORT).show();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                        Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                        System.out.println("更新数据库Connection连接数据库成功");
                        Statement st = cn.createStatement();
                        String sql = "update book set B_Author='"+pname+"' where B_Name='"+name+"'";
                        System.out.println(sql);
                        st.execute(sql);
                        System.out.println("更新成功");
                        text="更新"+name+"的作者为"+pname+"成功";
                        myhandler.sendEmptyMessage(3);
                    } catch (ClassNotFoundException | SQLException e) {
                        System.out.println("更新失败");
                        e.printStackTrace();
                    }
    
                }
            }).start();
        }
        if(tagid==4){
            Toast.makeText(getApplicationContext(),"删除按钮点击",Toast.LENGTH_SHORT).show();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                        Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                        System.out.println("删除数据库Connection连接数据库成功");
                        Statement st = cn.createStatement();
                        String sql = "delete from book where B_Name='"+name+"'";
                        System.out.println(sql);
                        st.execute(sql);
                        System.out.println("删除成功");
                        text="删除书名为"+name+"成功";
                        myhandler.sendEmptyMessage(4);
                    } catch (ClassNotFoundException | SQLException e) {
                        System.out.println("删除失败");
                        e.printStackTrace();
                    }
    
                }
            }).start();
        }
    
    }
    

    13.2.修改后的代码(Onclick接口实现,afterTextchange接口实现,连接数据库方法实现,增删更查更新数据库方法实现)

    package com.example.mysql_demo;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.nfc.Tag;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.text.method.ScrollingMovementMethod;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener,TextWatcher{
        private Button Btsearch,Btinsert,Btupdate,Btdelete;
        private EditText editid,editname,editpname;
        private TextView Texttime;
        private TextView Textdisplay;
        private String text,id,name,pname;
        java.sql.Connection cn= null;
        Statement st= null;
        ResultSet rs= null;
    
    
    
        @Override
         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
            Textdisplay.setText("输入结束后的内容为 [" + s.toString()+" ] 即将显示在屏幕上");
            //依靠getEditableText()判断是哪个文本框
            if(s==editid.getEditableText()){
                id=s.toString();
            }
            if(s==editpname.getEditableText()){
                pname=s.toString();
            }
            if(s==editname.getEditableText()){
                name=s.toString();
            }
        }
    
        public void MysqlConnect(){
    
            try {
                //第一步  寻找这个驱动,JVM加入内存
                Class.forName("com.mysql.jdbc.Driver");
                System.out.println("ClassforName成功");
                //第二步  通过connection数据库建立链接对象
                cn = DriverManager.getConnection("jdbc:mysql://192.168.1.4/testdb","***","123456");
                System.out.println("Connection连接数据库成功");
                //第三步 通过cn链接对象 创建一个statement对象,操作对象
                st =cn.createStatement();
                //class 异常
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.out.println("ClassforName失败");
                text="ClassforName失败";
    //            myhandler.sendEmptyMessage(1);
                //Connection 异常
            }  catch (SQLException e) {
                e.printStackTrace();
                System.out.println("Connection连接数据库失败");
                text="Connection连接数据库失败";
    //            myhandler.sendEmptyMessage(1);
            }
    
        }
        public void Mysqlupdate(String sql){
            if (sql.indexOf("select")==0){
                try {
                    MysqlConnect();
                    System.out.println("执行第111111111111111111111111111111111111111步");
                    rs=st.executeQuery(sql);
                    //class 异常
                } catch (SQLException e) {
                    e.printStackTrace();
                        System.out.println("查询数据库失败");
    //            text="Connection连接数据库失败";
    //            myhandler.sendEmptyMessage(1);
                }
            }else{
                try {
                    MysqlConnect();
                    System.out.println("执行第222222222222222222222222222222222222222222步");
                    st.execute(sql);
                    //class 异常
                } catch (SQLException e) {
                    e.printStackTrace();
                    if(sql.indexOf("insert")==0){
                        System.out.println("插入数据库失败");
                    }
                    if(sql.indexOf("update")==0){
                        System.out.println("更新数据库失败");
                    }
                    if(sql.indexOf("delete")==0){
                        System.out.println("删除数据库失败");
                    }
    //            text="Connection连接数据库失败";
    //            myhandler.sendEmptyMessage(1);
                }
            }
        }
    
    
        @Override
        public void onClick(View v) {
            //由于多个按钮作用不太一样,所以先识别Tag标签来区分每个按钮,由于Tag为object对象,所以需要强制装换Integer
            //1--查询 2--插入 3--更新 4--删除
            Integer tagid = (Integer) v.getTag();
            if(tagid==1){
                Toast toast = Toast.makeText(getApplicationContext(), "查询按钮被点击", Toast.LENGTH_SHORT);
                toast.show();
                text = "查询结果为:\n";
                //建一个子线程 数据库操作属于网络操作,不能用UI线程
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        String sql = "select B_Name from book";
                        Mysqlupdate(sql);
                        try {
                            //第六步 返回结果集得到字符串,某一列
                            while (rs.next()) {
                                String mybook = rs.getString("B_Name");
                                System.out.println(mybook);
                                text = text + mybook + '\n';
                                myhandler.sendEmptyMessage(1);
                            }
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
            if(tagid==2){
                Toast.makeText(getApplicationContext(),"插入按钮点击",Toast.LENGTH_SHORT).show();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                            String sql ="insert into book values("+id+",'"+name+"','小明','河南出版社','2020-05-21')";
                            Mysqlupdate(sql);
                            text="插入"+name+"数据库成功";
                            myhandler.sendEmptyMessage(2);
                    }
                }).start();
            }
            if(tagid==3){
                Toast.makeText(getApplicationContext(),"更新按钮点击",Toast.LENGTH_SHORT).show();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                            String sql = "update book set B_Author='"+pname+"' where B_Name='"+name+"'";
                            Mysqlupdate(sql);
                            text="更新"+name+"的作者为"+pname+"成功";
                            myhandler.sendEmptyMessage(3);
                    }
                }).start();
            }
            if(tagid==4){
                Toast.makeText(getApplicationContext(),"删除按钮点击",Toast.LENGTH_SHORT).show();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                            String sql = "delete from book where B_Name='"+name+"'";
                            Mysqlupdate(sql);
                            text="删除书名为"+name+"成功";
                            myhandler.sendEmptyMessage(4);
                    }
                }).start();
            }
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Btsearch = findViewById(R.id.search);
            Btinsert = findViewById(R.id.insert);
            Btupdate =findViewById(R.id.update);
            Btdelete = findViewById(R.id.delete);
            editid = findViewById(R.id.isbn);
            editname = findViewById(R.id.b_name);
            editpname = findViewById(R.id.p_name);
            Texttime = findViewById(R.id.time);
            Textdisplay = findViewById(R.id.text_display);
            //textview滑动条
            Textdisplay.setMovementMethod(ScrollingMovementMethod.getInstance());
            //第一种myclick实现 用 implements OnclickListener
            //所有用this代替
            Btsearch.setOnClickListener(this);
            Btinsert.setOnClickListener(this);
            Btupdate.setOnClickListener(this);
            Btdelete.setOnClickListener(this);
            //设置Tag标签
            //1--查询 2--插入 3--更新 4--删除
            Btsearch.setTag(1);
            Btinsert.setTag(2);
            Btupdate.setTag(3);
            Btdelete.setTag(4);
            //所有文本 输入框用接口implements TextWatcher实现
            editid.addTextChangedListener(this);
            editpname.addTextChangedListener(this);
            editname.addTextChangedListener(this);
    
    
        }
    
        private Handler myhandler =new Handler(){
            public void handleMessage(Message msg){
                if(msg.what!=0){
                    Textdisplay.setText(text);
                }
            }
        };
    
    }
    

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    展开全文
  • vs2017连接mysql数据库操作步骤

    万次阅读 多人点赞 2018-01-25 09:26:47
    没有连接过mysql数据库的vs,在创建实体模型的时候,数据源选项没有MySql database ,这是因为没有安装vs使用的MySQL驱动,需要在MySQL官网下载相关驱动,需要下载的文件总共有三个,(这三个是我亲测可用的,没有...
  • mysql 数据库恢复步骤

    2019-01-25 16:22:17
    注意:数据库名称保持一致,数据库编码保持一致,数据库引擎保持一致 ...1. 创建与需要恢复的数据库名(以下简称恢复库)相同的数据库,如果类型是Innodb,创建数据库也需为该类型:  ```  例: CREATE DATABAS...
  • Windows下QT5.1.1连接MySQL 5.6数据库步骤 系统版本为为windows7 32位,QT版本为QT5.1.1,MySQL版本为Mysql 5.6 一、安装配置MySQL 1. 进入网页 http://dev.mysql.com/downloads/installer/5.6.html,下载MySQL GA...
  • MySQL创建数据库

    2017-01-09 09:38:39
    1、创建数据库mydb mysql> CREATE DATABASE mydb; 2、选择刚刚创建的数据库 mysql> USE mydb; Database changed 这就进入刚才创建的数据库mydb中了。 3、执行sql文件 使用source命令执行 m
  • Servlet连接MySQL数据库步骤

    千次阅读 2019-10-27 13:30:48
    1.加载驱动程序 Class.forName(...String dburl = "jdbc:mysql://127.0.0.1:3306/数据库名?useSSL=false&serverTimezone=UTC" Connection conn = DriverManager.getConnection(dburl,"...
  • MySQL建立数据库、建表常用步骤

    千次阅读 2020-01-05 17:46:39
    2、创建数据库: >CREATE DATABASE db_name; //db_name为数据库名 3、使用数据库: >USE db_name; 4、删除数据库: >DROP DATABASE db_name; 二、创建表: 1、创建表: >CREATE TABLE table_name( >id TINYINT ...
  • Eclipse连接mysql数据库详细步骤

    千次阅读 多人点赞 2019-08-05 20:04:27
    Eclipse连接mysql数据库详细步骤 1.首先,新建一个java项目,在此项目里新建一份lib文件(用来存放外来包) 2.然后再将我们事先准备好的jar包放在lib文件里 3.然后右击jar包–>Build Path–>Add to Build Path...
  • Java ee 链接mysql 数据库完整步骤

    万次阅读 2017-07-11 16:43:56
    Java ee 链接mysql 数据库完整步骤 mac 版也可以 。我们需要先下载Mysql的驱动包 mysql的驱动包下载地址然后将它拖到这里,再建立路径 弄好之后,完成这个之后我们打开MySql Workbench,建立一个数据库这里是 n
  • MyEclipse连接MySQL数据库详细步骤

    万次阅读 多人点赞 2016-03-14 17:16:05
    双击打开MySQL Query Browser,输入密码“admin”,在红色框空白区域邮件,选择Create New Schema,创建数据库 命名为mydb(不区分大小写),选择OK。 右键mydb,选择Create New Table ...
  • PowerDesigner 连接MySQL数据库详细步骤

    千次阅读 2019-03-29 16:18:41
    PowerDesigner 连接MySQL数据库详细步骤 简介 有的时候我们想把数据表结构可视化,想知道表中有哪些字段,表与表之间的关联关系,这个时候我们可以使用PowerDesigner工具,将表转化为可视化模型。 工具 1、...
  • Mysql 数据库创建基本步骤

    千次阅读 2017-06-05 11:30:25
    1.创建数据库 create database school; 2.使用数据库 Use school; 3.创建用户 create user jame@localhost identified by 'jame'; 4.授权用户(注意这里是用了*哦,自己将school也替换成*号) ...
  • 3.进入Android Studio创建一个类,写好连接数据库的代码 我们采用的是常用的JDBC方法来连接,需要的jar包有mysql-connector-java-5.1.49.jar,其他版本的下载地址在这里。 代码如下: package com.example.linktest; ...
  • Django连接mysql数据库步骤非常详细

    千次阅读 2021-03-10 15:32:09
    以上内容是创建按django工程的时候是自动创建的。这个是告诉你,django默认连接sqllite。ENGINE:是指连接数据库驱动的名称,NAME是指要连接什么库,什么文件。ENGINE有以下几种情况: 1.django.db.backends....
  • Golang连接使用MySql5.7数据库完整步骤

    千次阅读 2018-09-11 11:50:52
    创建数据库、用户以及修改密码 在终端中输入命令,启动数据库: service mysql start 以下是在MySql中执行的操作。 为防止修改系统的数据库,我们需要新建一个新的数据库: CREATE DATABASE test_db; 切换到...
  • java利用jdbc连接近程MySQL数据库详细步骤+数据库封装类 文章目录java利用jdbc连接近程MySQL数据库详细步骤+数据库封装类一、导connector包二、连接数据库1. 加载四大件之一 驱动(新版jdk可忽略)2. 连接到数据库,三...
  • JDBC连接mysql数据库步骤

    千次阅读 2017-12-19 21:25:30
     Jdbc编程步骤 加载驱动程序: ... 连接mysql数据库 获得数据库的连接: Connection conn=DriverManager.getConnection(URL, USER, PASSWORD); 创建Statement对象: Statemen
  • 步骤: 使用show语句找出在服务器上当前存在什么数据库mysql>show databases; 创建一个数据库test: mysql>create database test; 选择你所创建数据库mysql>use test; 4创建一个...
  • U3D连接MySQL数据库详细步骤解析

    千次阅读 2018-06-25 16:08:52
    本文转自博主Hozshan的文章 “Unity3D 学习笔记(四) Unity连接MySQL数据库”,他对各个步骤都做了详细的介绍。 文章链接:https://blog.csdn.net/sysuhezshan/article/details/41521423 1.首先安装MySQL 我安装的...
  • java连接mysql数据库的详细步骤

    万次阅读 多人点赞 2016-11-28 15:48:07
    java连接mysql数据库的详细步骤 连接说明: a、mysql连接的驱动 b、mysql数据库的安装 c、eclipse e、数据库服务是否打开(控制面板——管理工具——服务——找到mysql对应服务) f、创建一个数据库 1、...
  • MySQL创建数据库并插入数据(二)

    千次阅读 2020-01-12 13:27:20
    本节实验将创建一个名为 mysql_shiyan 的数据库,其中有两张表 employee 和 department。 1.2 实验知识点 基本数据类型 插入数据 1.3 实验环境 课程使用的实验环境为 win10 64 位版本。实验中会用到程序: Mysql ...
  • 一、MySQL的安装 二、登入MySQL创建数据库和表 三、测试连通性
  • 在eclipse上连接MySQL数据库步骤之菜鸟入门

    万次阅读 多人点赞 2017-12-31 23:28:05
    在网上搜了很多关于如何在eclipse上连接数据库的问答和博客,... ②创建数据库 ③用eclipse尝试加载sql驱动并获得数据库连接 1.下载jdbc驱动jar包 建议从官网上直接下载 https://dev.mysql.com/downloads/connector
  • Linux服务器上安装MySQL数据库基本步骤

    万次阅读 多人点赞 2019-02-25 11:46:01
    (1)使用xshell连接Linux服务器,在根目录下,输入“yum -y install mysql mysql-server mysql-devel” 安装MySQL。 到最后出现“Complete!”,表示安装成功。 (在执行该命令之前,可以用“yum list | grep ...
  • 1、使用SHOW语句找出在服务器上当前存在什么数据库:  mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | ...2、创建一个数据库abccs  mysq

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 200,045
精华内容 80,018
关键字:

mysql建立数据库的步骤

mysql 订阅