单片机如何与数据库_单片机数据发送到数据库 - CSDN
  • Android 直接连MySQL数据库

    万次阅读 2015-04-21 09:28:02
    1、Android平台下服务器数据库通信的方法    在Android平台下,连接电脑服务器的MySQL、PostgreSQL、Oracle、Sybase、Microsoft SQLServer等数据库管理系统DBMS(databasemanagement system),主要有以下两种方法...

    1、Android平台下与服务器数据库通信的方法

    在Android平台下,连接电脑服务器的MySQL、PostgreSQL、Oracle、Sybase、Microsoft SQLServer等数据库管理系统DBMS(databasemanagement system),主要有以下两种方法:

    方法1、直接连接

    在Android工程中引入JDBC驱动,直接连接。(本文主要介绍此种方法)


    方法2、间接连接

    在服务器上用PHP+DBMS做服务器端,PHP将DBMS中的数据用json或者xml进行封装。然后再发封装好的数据返回给Android平台。


    注意:

            采用JDBC方法主要问题是安全性不高,而且一旦要访问的数据量过多,容易出问题。另外,Android系统本身有对json或者xml直接解析的api,所以建议采用第二种方法,实用性与安全性都提高了。



    2、JDBC简介

           JDBC是Java Data Base Connectivity的缩写,意思为“java数据库连接”,由一组用Java语言编写的类和接口组成,为java层直接操作关系型数据库提供了标准的API。原理很简单,主要是先服务器DBMS发送SQL(结构化查询语言)指令。实现各种数据库的操作。

     


    3、如何在Android中使用JDBC与服务器数据库通信

    在Android工程使用JDBC连接数据库的主要步骤如下:

    加载JDBC驱动程序------->建立连接--------->发送SQL语句。


    3.1加载JDBC外部jar包

    在Android工程中要使用JDBC的话,要导入JDBC的外部jar包,因为在java的JDK中并没有JDBC的API。

    我用的jar包是mysql-connector-java-5.0.8-bin.jar,这是由MySQL官方提供的jar包。


    我之前在网上查到的jar包导入方式都是:eclipse选择工程,右键---->Properties---->在左侧选项“Java Build Path”---->切换到“Libraries”---->选择“Add External JARs”---->找到mysql-connector-java-5.0.8-bin.jar,导入---->完毕。


    但是经过实践之后,总是报java.lang.NullPointerException错误。

    在网上找资料后,找到解决办法:

    ADT 18在编译外部jar包的方式发生改变了,build path的方式无效了,正确的做法应该是:

    在项目上点右键 ->新建一个文件夹libs(如果项目中存在,则不需要再新建)->复制jar包到libs文件夹。


    3.2建立数据库连接

    Android与不同的数据库连接方式是不一样的,主要有一下几种:

    /*DB2连接方式*/
    Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
    String url="jdbc:db2://dburl:port/DBname"
    cn = DriverManager.getConnection( url, userName, password );
    
    /*Microsoft SQLServer(microsoft)连接方式*/
    Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );
    cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://DBServerIP:1433;databaseName=master", userName, password );
    
    /*Sybase(jconn2.jar)连接方式*/
    Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" );
    cn = DriverManager.getConnection( "jdbc:sybase:Tds:DBServerIP:2638", userName, password);
    
    /*MySQL(mm.mysql-3.0.2-bin.jar)连接方式*/
    Class.forName("com.mysql.jdbc.Driver");
    cn = DriverManager.getConnection( "jdbc:mysql://DBServerIP:3306/myDatabaseName", userName, password );
    
    /*PostgreSQL(pgjdbc2.jar)连接方式*/
    Class.forName( "org.postgresql.Driver" );
    cn = DriverManager.getConnection( "jdbc:postgresql://DBServerIP/myDatabaseName", userName, password );
    
    /*Oracle(classes12.jar)连接方式*/
    Class.forName( "oracle.jdbc.driver.OracleDriver" );
    cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", userName, password );
    
    /*ODBC连接方式*/
    Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
    Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, userName, password );

    我连接的是MySQL数据库,所以我用的是

    Connection con = null;
    try {
    	Class.forName("com.mysql.jdbc.Driver");
    	cn = DriverManager.getConnection( "jdbc:mysql://address:port/DBName",UserName,Password);
    } catch (SQLException e) {
    	// TODO Auto-generated catch 
    	blocke.printStackTrace();
    } catch (ClassNotFoundException e) {
    	// TODO Auto-generated catch 
    	blocke.printStackTrace();
    }
    
    //address为数据库IP,port为端口,DBName为数据名;
    //UserName为数据登陆账号,Password为数据库登陆密码。


    
    

    3.3发送Sql语句

    try {
    	String sql = "select * from oner_alarm";		//查询表名为“table_test”的所有内容
    	Statement stmt = con.createStatement();		//创建Statement
    	ResultSet rs = stmt.executeQuery(sql);			//ResultSet类似Cursor
    			
    	//<code>ResultSet</code>最初指向第一行
    	while (rs.next()) {		
    		System.out.println(rs.getString("id"));	//输出第n行,列名为“test_id”的值 
    		System.out.println(rs.getString("content"));
    	}
    			
    	rs.close();
    	stmt.close();
    } catch (SQLException e) {
    	
    } finally {
    	if (con != null)
    		try {
    			con.close();
    		} catch (SQLException e) {}
    }
    以上连接数据库和发送sql语句,是我一开始的写法,但是这种写法一直都有错误,程序直接退出,我仔细的检测过了可能出错的地方,比如是否正确的导入了jar包,数据库的ip是否能ping通。
    
    

    查找资料后,有猿友说降低SDK和ADT的版本号,降低到16以下就可以了,总觉得这个方法怪怪的,也觉得这种方法比较麻烦。再查找之后,原来是Android4.0之后,不允许在主线程中进行比较耗时的操作(连接数据库就属于比较耗时的操作),需要开一个新的线程来处理这种耗时的操作,我之前用HttpURLConnection的方法获取网站数据,也是这个原因,没新线程时,一直就是程序直接退出,开了一个新线程处理直接,就没问题了。

    当然,连接数据库是需要网络的,千万别忘了添加访问网络权限:

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

    开了新线之后的代码如下:

    protected void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.activity_main);
    	
    	new Thread(runnable).start();
    }
    
    Handler myHandler=new Handler(){
    	@Override
    	public void handleMessage(Message msg) {
    		// TODO Auto-generated method stub
    		super.handleMessage(msg);
    		Bundle data=new Bundle();
    		data=msg.getData();
    		
    		System.out.println("id:"+data.get("id").toString());	//输出第n行,列名为“id”的值 
    		System.out.println("content:"+data.get("content").toString());
    	}
    };
    	
    Runnable runnable=new Runnable() {
    	private Connection con = null;
    
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			//引用代码此处需要修改,address为数据IP,Port为端口号,DBName为数据名称,UserName为数据库登录账户,Password为数据库登录密码
    			con = DriverManager.getConnection("jdbc:mysql://address:Port/DBName",
    				UserName,Password);
    			
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		try {
    			testConnection(con);	//测试数据库连接
    		} catch (java.sql.SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	public void testConnection(Connection con1) throws java.sql.SQLException {
    		try {
    			String sql = "select * from oner_alarm";		//查询表名为“oner_alarm”的所有内容
    			Statement stmt = con1.createStatement();		//创建Statement
    			ResultSet rs = stmt.executeQuery(sql);			//ResultSet类似Cursor
    			
    			//<code>ResultSet</code>最初指向第一行
    			Bundle bundle=new Bundle();
    			while (rs.next()) {		
    				bundle.clear();
    				bundle.putString("id",rs.getString("id"));
    				bundle.putString("content",rs.getString("content"));
    				Message msg=new Message();
    				msg.setData(bundle);
    				myHandler.sendMessage(msg);
    			}
    			
    			rs.close();
    			stmt.close();
    		} catch (SQLException e) {
    			
    		} finally {
    			if (con1 != null)
    				try {
    					con1.close();
    				} catch (SQLException e) {}
    		}  
    	}
    };
    效果图如下:



    总结,Android直接连数据需要注意的地方:

    1、用正确的方式导入正确的jar包。

    2、连接数据库是比较耗时的操作,需要开启新线程处理(网上说ADT16之前,不需要开启新线程处理,没有试过)。

    3、确保数据库的IP地址是可以ping通的。

    4、(有网友遇到过,并浪费了很多时间,我没有遇到)数据库所在的服务器是否开了防火墙,阻止了访问。

    5、调试要有耐心,如果代码确实看不出问题,可以尝试Clean项目,重新编译连接,我就碰到了这个问题,代码没有问题,但就是报错,Clean后再编译连接,就没有问题了,没有找到原因。


    程序完整代码下载地址:http://download.csdn.net/detail/wlwh90/8613563

    JDBC数据连接jar包下载地址:http://download.csdn.net/detail/wlwh90/8613571

    展开全文
  • Atitit 单片机与嵌入式系统原理概念 目录 1. 寄存器、数据库,堆栈 2 1.1. 寻址模式 2 1.2. 指令 2 1.3. Watchdog 中断 2 2. 软件是如何影响硬件设计的 2 2.1. 1.4.1谁在设计硬件 2 2.2. 1.4.2软件主导...

    Atitit 单片机与嵌入式系统原理与概念

     

    目录

    1. 寄存器、数据库,堆栈 2

    1.1. 寻址模式 2

    1.2. 指令 2

    1.3. Watchdog 中断 2

    2. 软件是如何影响硬件设计的 2

    2.1. 1.4.1谁在设计硬件 2

    2.2. 1.4.2软件主导硬件 2

    2.3. 1.4.3软硬件的均衡 2

    3. 6.3嵌入式系统的事件处理 3

    3.1. 6.3.2信号和事件是不是同一回事 3

    3.2. 6.3.3什么样的事件是时间敏感的 3

    3.3. 6.3.4当侦测到一个异常,微处理器如何处理 3

    3.4. 6.3.8中断是如何产生的和服务的 3

    4. 6.4中断程序 3

    5. 6.2 8051指令集 4

    6. .3  管态、异常和陷阱 4

    6.1. 3.3.2  异常 4

    6.2. 3.3.3  陷阱 4

    7. 3.6  CPU的性能 5

    7.1.  3.6.1  流水线技术 3.6.2  高速缓存的性能 5

    7.2. 5.2  嵌入式程序组件 5.2.1  状态机 5.2.2  循环缓冲区和面向流的程序设计 5.2.3  队列和生产者/消费者系统 5

    8. 6.6  进程间通信机制 6.6.1  共享内存通信 6.6.2  消息传递 6.6.3  信号 6.6.4  邮箱 5

    9. 7.第11章 存储管理   142(n内存 5

    9.1. 11.2  作用域   143 6

    9.2. 11.3  生命周期   145 6

    9.3. 11.4  自动分配   145 6

    9.4. 11.5  静态分配   146 6

    9.5. 11.6.1  对象创建   147 6

    9.6. 11.9  递归函数和内存分配   152 6

    10. 嵌入式服务 7

    10.1. Webserver 7

    10.2. ftp server 7

    11. 参考资料 7

     

     

     

    1. 寄存器、数据库,堆栈
      1. 寻址模式
      2. 指令
      3. Watchdog 中断

    指令的时序

    反汇编

     

    软件移植

    实时性

    1. 软件是如何影响硬件设计的
      1. 1.4.1谁在设计硬件
      2. 1.4.2软件主导硬件
      3. 1.4.3软硬件的均衡

    1.4.4硬件调试

    1.4.5自检

    1.4.6小结

     

    1. 6.3嵌入式系统的事件处理

    6.3.1事件

      1. 6.3.2信号和事件是不是同一回事
      2. 6.3.3什么样的事件是时间敏感的
      3. 6.3.4当侦测到一个异常,微处理器如何处理

    6.3.5所有的异常都一样吗

    6.3.6同步异常

    6.3.7异步异常

      1. 6.3.8中断是如何产生的和服务的

    6.3.9CPU保存的状态是什么

    6.3.10机器状态就是线程状态吗

    6.3.11异常处理程序应该用汇编语言还是C语言来写

    6.3.12怎样避免在异常处理程序上花费时间

    1. 6.4中断程序

    6.4.1设置中断

    6.4.2中断服务例程

    6.4.3中断向量

    6.4.4初始化

    6.4.5小结

    2.4 通信接口
    2.4.1 板上通信接口
    2.4.2 外部通信接口

    1. 6.2 8051指令集


    6.2.1 数据传输指令
    6.2.2 算术运算指令
    6.2.3 逻辑指令
    6.2.4 布尔运算指令
    6.2.5 程序控制转移指令

    1. .3  管态、异常和陷阱 

    CPU状态分为目态和管态两种,从目态转换到管态的惟一途径是?

    3.3.1  管态

      1. 3.3.2  异常
      2. 3.3.3  陷阱


    3.5  存储系统机制
    3.5.1  高速缓存
    3.5.2  存储管理单元和地址转换

     

    1. 3.6  CPU的性能

      1. 3.6.1  流水线技术
        3.6.2  高速缓存的性能

     

      1. 5.2  嵌入式程序组件
        5.2.1  状态机
        5.2.2  循环缓冲区和面向流的程序设计
        5.2.3  队列和生产者/消费者系统

     

    1. 6.6  进程间通信机制
      6.6.1  共享内存通信
      6.6.2  消息传递
      6.6.3  信号
      6.6.4  邮箱
    2. 7.第11章 存储管理   142(n内存

     

    11.1  C语言中的对象   142

      1. 11.2  作用域   143

    11.2.1  改进局部作用域   143

    11.2.2  改进全局作用域   144

      1. 11.3  生命周期   145
      2. 11.4  自动分配   145
      3. 11.5  静态分配   146

    11.6  三个程序:区分静态分配和自动分配   147

      1. 11.6.1  对象创建   147

    11.6.2  对象初始化   147

    11.6.3  对象销毁   148

    11.7  动态分配   149

    11.7.1  内存碎片   150

    11.7.2  内存分配池   150

    11.8  具有变量大小的动态分配   150

      1. 11.9  递归函数和内存分配   152

     

    1. 嵌入式服务
      1. Webserver
      2. ftp server
    2. 参考资料

    单片机与嵌入式系统图书书目--2006年第1期.doc

    《嵌入式软件开发精解(Mentor Graphics公司资深嵌入式软件专家历时多年呕血之作。全景式展现了一幅嵌入式软件开发的路线图)》((美)瓦尔斯 著)【简介_书评_在线阅读】 - 当当图书.html

    《嵌入式系统原理、设计及开发(国外计算机科学经典教材)》((美)施部·克·威(V)【简介_书评_在线阅读】 - 当当图书.html

    《嵌入式硬件设计(第二版)》((美)卡特索利斯(Catsoulis)【简介_书评_在线阅读】 - 当当图书.html

    《嵌入式计算系统设计原理(原书第3版)》((美)沃尔夫 著)【简介_书评_在线阅读】 - 当当图书.html

    《嵌入式计算系统设计原理(原书第3版)》((美)沃尔夫 著)【简介_书评_在线阅读】 - 当当图书.html

    《嵌入式软件设计基础——基于ARM Cortex-M3(原书第2版)》(_(美)Daniel W. Lewis 著 圣克拉拉大学 陈文智 胡威 等译_)【简介_书评_在线阅读】 - 当当图书.html

    《嵌入式系统软件教程(附CD-ROM光盘一张)——计算机科学丛书》((美)西蒙 著)【简介_书评_在线阅读】 - 当当图书.html

    《Linux嵌入式实时应用开发实战(原书第3版)》((美)Doug Abbott 著)【简介_书评_在线阅读】 - 当当图书.html

    展开全文
  • 单片机存储理解

    千次阅读 2017-11-07 16:50:28
    单片机内部存储分为三块以AVR1280为例,该单片机内部存储有三个部分:1、内存RAM 2、FLASH 3、EEPROM有时候,我们的代码过大,为了避免给RAM造成压力,我们定义数组、变量等可定义存储在EEPROM或者FLASH中,这就给...

    单片机内部存储分为三块

    以AVR1280为例,该单片机内部存储有三个部分:

    1、内存RAM,运行程序时,将指令和变量拷贝至RAM,运行程序;
    
    2、FLASH,高级的单片机,可将程序存储在此处;
    
    3、EEPROM,一般单片机都将程序存放在此处。
    
    有时候,我们的代码过大,为了避免给RAM造成压力,我们定义数组、变量等可定义存储在EEPROM或者FLASH中,这就给RAM节省了空间。
    
    可以将变量存储于flash为例,可定义变量为:
    
    char __flash test[]="save in flash...";
    
    此时test数组存在于flash中,且test数组值不能更改,相当于常量定义const。
    
    在其他种类单片机中,相应的关键字可能不同于__flash。
    
    展开全文
  • keil中添加stc库,亲测有用。如何在keil中加入单片机数据库
  • 另外增加一个单片机数据库,既可以选择STC单片机,又不影响原来数据库的使用
  • 基于Arduino单片机 要做个微型数据库 不知道如何下手啊
  • 然后还能够识别仪器的,所以需要用单片机将识别的信息与数据库里的数据进行 查找识别,但不想用串口PC通信,所以想能否通过无线网络来实现,因为 本人是个新手,啥都不会,想来求救各位大佬们?
  • 单片机温度检测系统 利用vb编程,连接数据库
  • 写此json数据解析库的主要原因,因为最近在看json相关的程序,发现在linux下有完整的json库,而查看了这个json库后发现,这种json-c的库并不适用于单片机系统,尤其是没有OS的单片机系统,里面对内存的开销很大,...

    写此json数据解析库的主要原因,因为最近在看json相关的程序,发现在linux下有完整的json库,而查看了这个json库后发现,这种json-c的库并不适用于单片机系统,尤其是没有OS的单片机系统,里面对内存的开销很大,大量使用了malloc()和free()函数进行内存分配,考虑到在单片机系统内,这写函数都是尽量不使用,同时内存并不多,出于爱好,先写了个基于纯C语言的简单的json解析库。

    该库具备的特性:

    1.能够解析json字符串内的子json数据。

    2.能够解析str类型的json数据

    3.能够解析INT型数据

    4.能够解析bool型数据

    暂不支持的特性:

    1.不支持解析json数组类型数据(若去解析json数据中存在数组类型数据,将会返回出错)(json数组在单片机中用得确实少)

    2.不支持内存不够的判断(在使用API时需要保证所给的buff能够装得下所解析的数据,这也是单片机中常用的做法)

    3.基本库所解析回来的INT,bool等数据类型都是字符串的形式存在,可以通过扩张库转化为数字和bool变量

     

     

    eg:例程使用了linux下的json-c生成了一段json字符串,然后调用我编写的json解析获取数据

    #include <string.h>
    #include <stdlib.h>
    #include <stddef.h>
    
    #include "json.h"
    #include "hgetjson.h"          //针对于单片机提供的json库头文件
    
    
    
    int main(int argc, char *argv[])
    {
    	json_object *smart_home_protocol = NULL, *hellotest = NULL, *test11 = NULL;
    	
    	smart_home_protocol = json_object_new_object();
    	hellotest = json_object_new_object();
    	test11 = json_object_new_object();
    	
    	
    	if(smart_home_protocol == NULL)
    	{
    		printf("New Json Object Fail!\n");
    		exit(1);
    	}
    	int rc = json_object_object_add(smart_home_protocol, "Smart Home", smart_home_protocol);
    	json_object_object_add(smart_home_protocol, "heihei", json_object_new_int(66));
    	json_object_object_add(test11, "haha", json_object_new_int(35));
    	json_object_object_add(hellotest, "test0", hellotest);
    	json_object_object_add(hellotest, "haha",json_object_new_int(36));
    	json_object_object_add(hellotest, "heihei", test11);
    	json_object_object_add(smart_home_protocol, "test", hellotest);
    	//if (rc != -1)
    	//{
    		//printf("ERROR: able to successfully add object to itself!\n");
    		//fflush(stdout);
    	//}
    	json_object_object_add(smart_home_protocol, "router", json_object_new_string("Normal"));
    	json_object_object_add(smart_home_protocol, "temperature", json_object_new_int(36));
    	json_object_object_add(smart_home_protocol, "haha",json_object_new_int(37));
    	json_object_object_add(smart_home_protocol, "safe", json_object_new_boolean(1));
    	
    	
    	char *jsonstr = json_object_to_json_string(smart_home_protocol);
    	
    	printf("Json data :%s\n", jsonstr); //linux json-c 生成的json字符串
    	
    	char buff1[50] = {0};            //用来存放数据的buff
    	char buff2[50] = {0};
    	
    	int ret = get_json_object(buff1, "test", jsonstr);    //从jsonstr中获取名称为test的子json数据
    	if(ret)
    		printf("ERROR\n");
    	else
    	{
    		printf("\ntest json from jsonstr:%s\n", buff1);
    	}
    	
    	ret = get_json_object(buff2, "heihei", buff1);     //从子testjson中获取名为heihei的子json数据
    	if(ret)
    		printf("ERROR\n");
    	else
    	{
    		printf("\nheihei json from test:%s\n", buff2);
    	}
    	
    	ret = get_json_object(buff1, "heihei", jsonstr); //直接从jsonstr获取名为heihei的子json数据,直接穿过test 的子json
    	if(ret)
    		printf("ERROR\n");
    	else
    	{
    		printf("\nheihei json from jsonstr:%s\n", buff1);
    	}
    	
    	const char testname[4][10] = {"heihei", "haha", "router", "safe"};
    	
    	printf("\n");
    	for(int ii = 0; ii < 4; ii++)      //获取不同的数据和数据类型
    	{
    		ret = get_json_dat(buff2, &testname[ii][0], jsonstr);
    	
    		if(ret == STRTYPE)
    			printf("%s is STR dat from jsonstr, dat is %s\n", &testname[ii][0], buff2);
    		else if(ret == INTTYPE)
    			printf("%s is INT dat from jsonstr, dat is %s\n", &testname[ii][0], buff2);
    		else if(ret == BOOLTYPE)
    			printf("%s is BOOL dat from jsonstr, dat is %s\n", &testname[ii][0], buff2);
    		else
    			printf("Get ERROR\n");
    	}
    	
    
    	json_object_put(smart_home_protocol);        //释放掉linux json-c的内存
    	
    	
    	return 0;
    }

    运行结果如图:

     

     

    单片机hjson使用说明:

    获取json数据中子json API

    int get_json_object(char *buff, char *object_name, char *json_dat)

    buff:用于保存解析后的数据存储指针

    object_name:获取子json数据名称指针

    json_dat:原始json数据指针

    返回值:0,获取成功,1获取失败

     

    获取json内部数据的API:

    int get_json_dat(char *buff, char *dat_name, char *json)

    buff:用于保存解析后的数据存储指针

    dat_name:获取数据的名称指针

    json:原始json数据(注意:获取数据只会从根json中获取,不会从内部包含的子json中回去数据,若需要获取子json中的数据,需要先把子json给提取出来)

    返回值:#define NONETYPE        0
                  #define STRTYPE            1
                  #define INTTYPE            2
                  #define BOOLTYPE        3

    返回-1,者是没有找到该数据

     

    源码见:

    V1.0版本

    https://download.csdn.net/download/qq_18604707/10741372

    V1.1 处理了个别情况下字符串类型读取数据不正确的问题

    https://download.csdn.net/download/qq_18604707/12419134

    展开全文
  • flash与数据库 读取数据库数据

    千次阅读 2018-11-05 18:50:39
    flash与数据库 读取数据库数据
  • 最近博主在学习Spring的相关知识,数据库操作用到MyBatis框架 + MySQL。其中涉及到了多数据库连接的问题,坑了博主不少时间,所以还是记录一下经验。 1.1 业务场景 业务项目已经配置过了 MySql数据库A,暂且命名为 ...
  • 上次实验做到了建立了自己的数据库...上一篇:远程访问传感器获取数据并传入数据库----one今天做的是如何连接数据库,只有数据库连接成功才能传输数据。一、老师给的虚拟机有两个陷阱需要填上,即root用户不能连接和...
  • 常用数据库 精简版

    2019-06-14 21:06:50
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • Python高并发与数据库

    2018-11-30 08:48:46
    我们在实际的Python开发过程中,不可避免的需要与各种数据库进行交互,这些数据库包括关系型数据库与非关系型数据库,其中最具代表性的是Mysql、Mongodb和Redis,学习本套课程,大大提升你的开发效率,来奋战吧,骚...
  • STC单片机程序下载实战
  • dATa: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。 idATa:固定指前面0x00-0xff的256个RAM,其中前128和dATa的128完全相同,只是因为访问的方式不同。 idATa是用类似C中的...
  • 单片机与PC机之间的通信

    千次阅读 2014-02-28 15:49:42
    单片机与PC机之间的通信 51系列单片机内部的串行口具有通信的功能,该串口可以作为通信接口,利用该串行口PC机的串行口COM1或COM2进行串行通信,将单片机采集的数据传送到PC机中,由PC机的高级语言或数据库语言对...
  •   一个半月前学习了单片机,现在王的差不多了,重新把遗忘...串口号:当单片机与电脑连接后,正常连接则显示USB-SERAL CH340和对应串口号 单片机型号:单片机型号选择IAP15F2K61S2 打开程序文件:点击打开程序文件...
  • 关于数据库的介绍和操作 -- sqlite3

    千次阅读 2016-11-27 19:38:19
    数据库 -- sqlite3 一、数据库的定义 数据库是一个有结构、有集合、可共享的统一管理的数据集合。DataBase:简称DB。 二、数据库的特点 1. 实现数据共享 数据共享包含所有用户可同时存取数据库中的数据,也包括用户...
  • 单片机入门

    2012-06-19 10:36:27
    单片机简介可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么...
1 2 3 4 5 ... 20
收藏数 9,492
精华内容 3,796
关键字:

单片机如何与数据库