为想学SQLite或练习SQL语言的朋友搭建简单的命令行环境------在Windows, Linux, Android(用adb连接安卓手机)上玩转SQLite数据库的sqlite3命令行

       有言在先: 如果你是只想玩玩SQL语句的lazy bone,  请直接看本文最后的"LAST部分"


       之所以写这篇文章, 是因为觉得SQLite实在是太棒了, 想学习数据库的朋友们, 千万不要错过这么优秀的数据库。 对于初学者来说, SQLite非常容易上手和入门, 可实践性强。 那些年, 在学校的时候, 就想学学数据库, 结果, 在一些砖头般厚厚的理论书籍面前, 我心事重重, 望而却步,直到我遇到《SQLite权威指南》这本好书。好吧, 为SQLite以及《SQLite权威指南》打广告就到此为止了。



       在本文中, 我们来玩玩SQL数据库的sqlite3命令行, 也为想学SQLite或练习SQL语言的童鞋搭建简单的命令行环境, 毕竟现在SQLite已经无处不在了, 能看到这篇文章的人, 必定直接或间接使用过SQLite(比如你的手机中就有). 另外, 现在不是招聘找工作的旺季么, 你笔试面试还考SQL基本语句呢。所以, 如果能搭建个环境, 实践操作一下, 玩玩SQL语句和命令, 对笔试和面试也是有好处的。


       关于数据库SQLite编程的简介和实践, 我在http://blog.csdn.net/stpeace/article/details/38503843这篇文章中已经进行了详细的说明。 下面, 我再次给出代码:

#include 
#include "sqlite3.h" //api接口
#pragma comment(lib, "sqlite3.lib") //api实现



// 先说明一下: 为了简便起见, 我没有考虑异常情况


// 回调函数
int sql_callBack(void *notused, int argc, char **argv, char **szColName)  
{  
	int i = 0;  
	for (i = 0; i < argc; i++)  	
	{  	
		printf( "%s = %s\n", szColName[i], argv[i]);  	
	}  
	
	return 0;  	
}  

int main()  
{  
	const char *sSQL1 = "create table users(name  PRIMARY KEY, age int, score int);";  
	const char *sSQL2 = "insert into users values('taoge', 26, 100);"; 
	const char *sSQL3 = "insert into users values('cainiao', 5, 1);"; 
	const char *sSQL4 = "select * from users;";  
	
	sqlite3 *pDb = NULL;  
	char *pErrMsg = NULL;  

	sqlite3_open("taoge.db", &pDb); // 打开数据库 
	
	sqlite3_exec( pDb, sSQL1, NULL, NULL, &pErrMsg);  // 创建基本信息格式
	sqlite3_exec( pDb, sSQL2, NULL, NULL, &pErrMsg);  // 增加信息
	sqlite3_exec( pDb, sSQL3, NULL, NULL, &pErrMsg);  // 增加信息
	sqlite3_exec( pDb, sSQL4, sql_callBack, 0, &pErrMsg); // 查询数据库
	sqlite3_close(pDb); // 关闭数据库

	return 0;  	
} 
          说明:

         1. 上述程序的环境是VC++6.0

         2. 上述程序需要的文件、库和整个工程, 我都已经上传到了自己的csdn博客资源中, 大家下载后可以直接运行。 其中还包括SQLiteSpy.exe这个优秀的GUI工具以及我们马上要介绍到的Windows下的命令行工具sqlite3.exe

         3. 如果有疑问, 可以参考之前博客文章:http://blog.csdn.net/stpeace/article/details/38503843


         运行上面的程序, 我们看到, 当前目录下生成了taoge.db这个数据库文件(本质就是一个文件), 在那个黑漆漆的控制台上, 则有如下结果

name = taoge
age = 26
score = 100
name = cainiao
age = 5
score = 1


         对于程序员来讲, 我们可能和CEO, CFO和UFO不太沾边,  但肯定熟悉GUI, CLI, API.   我们已经用API生成了一个数据库文件, 也用API访问了它。 当然, 也可以用GUI形式的可视化工具SQLiteSpy.exe来读取它, 实际上, 我们已经介绍过了。 本文, 我们关注用CLI的方式来读取:分别是Window CLI, Linux CLI和Android CLI.



        一. Windows  sqlite3命令行

        其实很简单, 在网上(比如我的csdn博客资源中)下载前面说的sqlite3.exe, 然后把他放到和cmd.exe同目录下。 然后我在桌面建立了一个sql文件夹, 并把生成的taoge.db文件拷贝到其中, 随后执行如下操作:

为想学SQLite或练习SQL语言的朋友搭建简单的命令行环境------在Windows, Linux, Android(用adb连接安卓手机)上玩转SQLite数据库的sqlite3命令行_第1张图片

        我们看到了, 果然输出了数据库中的东东。



        二.  Linux sqlite3命令行

        实际上, 我装了linux后, 就自然有sqlite3这个命令行工具了, 可见sqlite3确实很普遍。 大家可以试一下, 如果你的linux上没有sqlite3这个命令, 那安装一个也很简单, 具体方法: 左手谷歌, 右手百度。

        下面是linux上的执行结果:

[taoge@localhost sql]$ ls
taoge.db
[taoge@localhost sql]$  sqlite3 taoge.db .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE users(name  PRIMARY KEY, age int, score int);
INSERT INTO "users" VALUES('taoge',26,100);
INSERT INTO "users" VALUES('cainiao',5,1);
COMMIT;
[taoge@localhost sql]$ 

         我们看到了, 果然输出了数据库中的东东。



        三. Android手机上的sqlite3命令行
        
         先说明一下, 我买的是小米手机, 我进入手机的shell里面查了一下, 发现里面是没有sqlite3命令这个东东的, 奇怪了, 难道小米把这个命令给裁剪掉了么? 我看极有可能。 那怎么安装呢? 请参考:http://www.cnblogs.com/localhost/archive/2012/04/09/2439558.html,  我就是这么做的。 在此, 感谢作者。我对原文进行截图, 并在图中说明。 (有言在先:如果adb连接不了, 请参考我之前介绍的adb连接手机的博文)

为想学SQLite或练习SQL语言的朋友搭建简单的命令行环境------在Windows, Linux, Android(用adb连接安卓手机)上玩转SQLite数据库的sqlite3命令行_第2张图片


       可以用类似的方法吧taoge.db这个文件推入到/data/data目录下, 我推进去了。 实际上呢, 进行了上述操作后, 我还执行了reboot操作, 确保推入的库生效。  然后,等手机开机后, 我又重新连接上adb.(有言在先:如果adb连接不了, 请参考我之前介绍的adb连接手机的博文)

       然后执行如下操作, 结果为:

为想学SQLite或练习SQL语言的朋友搭建简单的命令行环境------在Windows, Linux, Android(用adb连接安卓手机)上玩转SQLite数据库的sqlite3命令行_第3张图片

        我们看到了, 果然输出了数据库中的东东。大家在用adb的时候, 在adb的安装阶段, adb连接手机阶段, adb推入文件等各个阶段, 肯定会遇到各种各样的问题, 比如常见的pc ping不通过手机问题(尽管手机能ping通pc), adb端口冲突问题, adb是否允许连接问题(手机adb端口默认关闭),目录权限问题, 文件权限问题。其实只要静下心想想, 百度一下, 基本都能找到解决的方法。 这些问题, 我在捣腾手机的时候, 都亲自遇到过,最后也一个一个解决了。


        好了, 本文中我们介绍了Windows, Linux, Andoid下的sqlite3命令行, 实际上本质是一致的。最简单肯定是直接用Windows下的命令行, 只需要下载个sqlite3.exe然后放到对应的地方即可, 多方便啊。


        本文为想学SQLite或练习SQL语言的童鞋搭建简单的命令行环境, 以后多加练习吧。



      LAST部分

        最后, 如果你是lazy bone, 不想玩程序, 只想玩一下SQL, 那也行, 你只需要在网上下载(到处都有, 当然你也可以在我的csdn资源下载)sqlite3.exe, 然后把它放到与cmd.exe同目录下就可以了, 这样, 就可以玩SQL了, 如下:

为想学SQLite或练习SQL语言的朋友搭建简单的命令行环境------在Windows, Linux, Android(用adb连接安卓手机)上玩转SQLite数据库的sqlite3命令行_第4张图片

       为了方便lazy bone们复制并输入, 我直接贴出:

C:\Documents and Settings\Administrator\桌面\sql>
C:\Documents and Settings\Administrator\桌面\sql>
C:\Documents and Settings\Administrator\桌面\sql>
C:\Documents and Settings\Administrator\桌面\sql>sqlite3 YouLazyBone.db
SQLite version 3.8.5 2014-06-04 14:06:34
Enter ".help" for usage hints.
sqlite>
sqlite> create table YouLazyBone(name PRIMARY KEY, age int, score int);
sqlite>
sqlite> insert into YouLazyBone values('taoge', 26, 100);
sqlite>
sqlite> insert into YouLazyBone values('cainiao', 5, 1);
sqlite>
sqlite> select * from YouLazyBone;
taoge|26|100
cainiao|5|1
sqlite> .exit

C:\Documents and Settings\Administrator\桌面\sql>


        值得注意:

        1.sqlite3 YouLazyBone.db;中YouLazyBone是数据库名。 create table YouLazyBone(name PRIMARY KEY, age int, score int);中YouLazyBone是表明。 两个名字没有什么关系, 可以不一致, 你爱怎么着就怎么着。

        2. sqlite3 YouLazyBone.db;这句并没有创建数据库文件, 后面要有create table YouLazyBone(name PRIMARY KEY, age int, score int);才可以, 此时, 我们可以看到目录中有了YouLazyBone.db这个数据库文件

       

        如果连命令都懒得敲入, 那就直接复制如下的东西吧:

sqlite3 my.db
create table test(name PRIMARY KEY, age int, score int);
insert into test values('taoge', 26, 100);
insert into test values('cainiao', 5, 1);
select * from test;
.exit

     

      结果:

为想学SQLite或练习SQL语言的朋友搭建简单的命令行环境------在Windows, Linux, Android(用adb连接安卓手机)上玩转SQLite数据库的sqlite3命令行_第5张图片

        

        OK,  本文就先说到这里了。



       知识在于积累,经验在于捣腾!


 




 

         



你可能感兴趣的:(s2:,软件进阶,s2:,Linux杂项,s2:,Android,s4:,数据库)