华清远见-学习小结

发布于:2023-01-10 ⋅ 阅读:(499) ⋅ 点赞:(0)

22061


一、本周的学习和感受

本周的学习内容并不多,主要是SQLite3数据库的学习与使用,C++的基础知识和基础命令.

SQLite3的学习主要包括:

一、SQLite3的安装  ;


sudo apt-get install sqlite3 //数据库操作软件
sudo apt-get install libsqlite3-dev //数据库开发库

二、数据库的创建和打开  ;

sqlite3 sql_name.db

此时,如果数据库存在即可直接打开,如果不存在,则创建并打开数据库;

三、数据库的常见语句和命令 ;

常见命令如下:

sqlite> .help        //显示帮助信息
sqlite> .quit        //退出库
sqlite> .database    //显示当前文件路径
sqlite> .tables      //显示数据库所有表名
sqlite> .schema      //查看表的结构
sqlite> .headers on  //显示列的名字
sqlite> .mode column //按照列显示

常见语句如下:

1、表的创建:

sqlite> create table table_name(column1 type1 , column2 type2 , ... , columnN typeN); 
// 创建表
// 其中 table_name 是要创建表的名字
// column 是字段名
// type是类型
// 类型包括  
// NULL : 空值;
// REAL : 浮点值;
// INTEGER : 整数值;
// TEXT : 字符串;
// BLOB : 二进制数据;
// PRIMARY  : 关键字,后接字段名不能重复;
// IF NOT EXISTS : 表示存在不创建;

2、数据的插入:

sqlite> insert into table_name values(value1 , value2 , ... , valueN);
// 插入数据
// table_name 是表名称 ;
// valueN 是插入数据 ;

3、数据的查询:

sqlite> select * from table_name;
sqlite> select column1 , column2 , ... , columnN from table_name;
sqlite> select * from tbale_name where [conditions];
// * 代表查询所有数据 ;
// table_name 表的名字,从哪里开始查 ;
// column 是指查询某个字段 ;
// where 后面接的是条件,代表筛选查询 ;

4、数据的更新:

sqlite> update table_name set column1 = value1 , ... , columnN = valueN where [condition];
// set 后面接需要修改的内容 ;
// where 后秒接该表的条件 ;

5、删除记录:

sqlite> delete from table_name where [condition];
// table_name 是删除内容表的名字 ;
// where 后面接条件 ;

6、删除表:

sqlite> drop table table_name;
// table_name 是需要删除表的名字 ;

四、SQLite3 API 编程 ;

//需要加上数据库头文件 ;
#include <sqlite3.h> 

int main(int argc, const char *argv[])
{
    //运行程序后面需要接数据库名称,否则报错;
	if(argc != 2)
	{
		fprintf(stderr,"请输入:%s 数据库\n",argv[0]);
		return -1;
	}

	int ret;
    sqlite3 *db; // 定义数据库

	ret = sqlite3_open(argv[1],&db); // 打开数据库
    // 打开失败则判错
	if(ret != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open fail:%s\n",sqlite3_errmsg(db));
		return -1;
	}

    char sql[32] = "执行语句";
    int sqlite3_exec(sqlite3 *db,const char *sql,int(*callback)(void*,int,char**,char**),void *arg,char **errmsg); //执行语句

//  int sqlite3_get_table(sqlite3 *db,const char *zSql,char ***pazResult,int *pnRow,int *pnColumn,char **pzErrmsg);
// 非回调的select查询语句

    sqlite3_close(db); // 关闭数据库
    return 0;
}

C++的基础命令则如下 :

#include <iostream>

namespace{
}                         // 命名空间 ;

using namespace std;      //全局引用std命名空间 ;

cout << "hellow" << endl << "nihao" << endl; 
// cout 输出 ;
// endl 换行 ;

cin >> i; // 输入 ;

二、遇到的困难和解决方案

本周主的困难是在写网络编程电子辞典时,所遇到的一些问题,比如 :

1、只需要用户名存在,密码胡乱填写也可以登录本辞典;

解决方法 :

在查询库并且对比用户名的同时,条件查询次用户名的密码,并且进行比对;

但是在比对的过程中,我又遇见了新的问题,调试过程中,输入的密码和比对结果完全一致,比对前把两个目标进行输出,确实毫无区别,但是就是无法比对成功;

后面发现字符串不能进行直接比对,也就是 == 无法比对字符串,需要应用strcmp来比对;

2、查询的过程对我来说,开始确实很难写,对于新手来说,编程思路很好找,但是代码设计却非常难;

解决方法 : 

把思维简单化,代码不是越复杂越好,把复杂的程序用简单的代码表示出来,让人一目了然才是好代码;

于是我改变传输的参数,化繁为简,成功写出来电子辞典;


总结

对于这一周的学习,我认为还是有一点成果的。不仅了解了许多数据库相关的知识点,还加深了对网络编程的学习和使用;

电子词典的编写让我对自身水平又有了一定的了解;我知道自己的不足,也让我发现了自己的优势,学习是一个循序渐进的过程;

之后我要去做的就是加强自己的不足之处,保持自己的优势;

我发现了只有不断的尝试,从失败中提取经验和教训,我才会不断的进步;无论是思维上,还是实际中,动手才是检验成功的唯一方法;

但也不能盲目的乱尝试,这个课程需要动脑,必然是先去熟记下基础概念,再去锻炼编程思维,然后才能不断的变强!

在C++方面虽然我还没有入门,却也了解到了C++学习的重要之处,让我对次学习兴趣高涨;

相信在接下来的学习中,我还能保持一颗进步的心.
 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到