再用Sqlite3 之学习新解,新感悟

之前为了使用Sqlite找了好多资料,最后发现都不尽人意,起初为了让能够把select * from table所有数据显示在list上,结果费了好大的功夫,最开始用回掉函数,但是它必须用static声明,这就产生了非常大的麻烦。花了一下午结果就是未果。放弃了,换了第二种方法,sqlite3_get_table;

这种方法虽然很麻烦,但是当时确实是实实在在的解决了我的问题。

昨天在想一个问题,为什么我每操作一次数据库都要有打开关闭的操作,我在想是不是应该在程序启动时打开,结束时关闭呢?

然后把自己写好风装好的MySqlite类给大改了一番,f5调试的时候是一点问题都没有的,一切正常,但是在生成后在dubug目录下双击运行时却出现了莫名其妙的错误,我把代码一段段注释掉,最后发现问题出在m_list.SetItemText(i,j,sql.m_data[(i+1)*(sql.m_col)+j+1]);这句话上

这句话还是敏思苦想了好久才想到的办法,因为表中第一列是id,我觉得没用,就想了各种方法去把他屏蔽掉。无奈知识面有限,不知道有没有更简单的办法。

说多了,总之就是上面这句代码出的问题,把它屏蔽掉之后再试就正常。不知道这是什么情况,如果说是下标越界的话早在f5的时候应该就暴漏出来了才对,但是这问题,,我还是不知道怎么回事。

	sqlite3 *db = NULL;
	sqlite3_stmt *stmt;
	sqlite3_open("xx.db",&db);
	char * errMsg = NULL;
	sqlite3_prepare(db,"select * from table;",-1,&stmt,0);
	int rc = sqlite3_step(stmt);
	while(rc == SQLITE_ROW){
		CString type = sqlite3_column_text(stmt,0);
		CString name = sqlite3_column_text(stmt,1);
		rc = sqlite3_step(stmt);
	}
	sqlite3_finalize(stmt);
	sqlite3_close(db);

这段代码就是刚查资料后找到的,原来相应的借口函数sqlite3也是有提供的,使用这个更好些。

目前正在研究每个接口函数的参数及使用方法

 

sqlite3_step执行后返回的结果, 如果是update, delete, insert等语句,正常应该返回 SQLITE_DONE ;如果是select语句,且有还有记录,则应该返回SQLITE_ROW;
sqlite3_prepare,它用来准备一条语句,存放在sqlite3_stmt上,step可以理解为单步执行,sqlite3_exec其实就是对sqlite3_prepare_v2sqlite3_step()sqlite3_finalize()的封装

 

 

未完待续

参考资料:http://www.cnblogs.com/kfqcome/archive/2011/06/27/2136999.html

 

在Grafana中,SQLite3作为默认的数据存储引擎,其权限管理通常通过数据库的用户和角色来进行。如果你想在Grafana的SQLite3数据库中添加用户,你需要访问Grafana的配置文件,因为Grafana在启动时会创建或连接到这个SQLite3数据库。以下是大致步骤: 1. **备份现有数据** (如果你不确定,先备份以防意外): ``` sqlite3 /path/to/grafana_data.db .backup ``` 2. **登录管理员账户** (如果尚未登录,打开Grafana并登录admin用户)。 3. **编辑配置文件** (通常是`config.ini`或`grafana.ini`),找到SQL初始化脚本部分,它通常位于`[database]`下的`initialization-script`设置: ```ini [database] ... initialization-script = /path/to/your/init.sql (假设你有自定义初始化脚本) ``` 4. **创建用户 SQL 命令** (这里是一个例子,替换 `new_username` 和 `password` 为实际的用户名和密码): ```sql INSERT INTO users (login, password_hash, email, name, is_active, is_admin, roles) VALUES ('new_username', 'hashed_password', 'new_username@example.com', 'New User', true, false, ARRAY['User']); ``` 其中,`hashed_password` 需要用Grafana内置的哈希函数处理,例如使用 `gravatar.hash('password')` 来生成哈希值。 5. **添加用户到初始化脚本** (如果你之前没有自定义脚本,可以在 `initialization-script` 设置的路径下创建一个 `.sql` 文件,并将上述SQL插入其中)。 6. **重启 Grafana** 或者手动运行初始化脚本来应用更改: ```bash grafana-server init ``` 7. **验证用户已添加** 登出当前用户,然后尝试使用创建的用户名和密码登录Grafana。 注意:为了安全起见,你应该在生产环境中使用更复杂的身份验证方法,如MySQL或PostgreSQL等,并在初始化阶段禁用SQLite3的默认超级用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值