用户:
星星上的雪花查看:2 回复:9 评论:2 创建时间:2021-11-21T22:23:25
【语言:JavaScript 和 SQLite】
使用前请在 [设置] 里确认你的数据库引擎是 [SQLite] 。支持部分PgSQL,不支持MySQL。
首先把这段代码复制到你的代码区里
/* 代码:星星上的雪花(主页 http://box3.fun/u/3910493) */
class SQLite {
constructor(table){
this.name = table;
};
static test(){};
create(options){
var name = this.name;
return (async function () {
try{
await eval(`db.sql\`SELECT * FROM "${name}"\``)
}catch(e){
var code = "";
for await(let e of options){
code += `"${e[0]}" ${e[1]},`;
}
code = code.slice(0, code.length - 1)
const value = await eval(`db.sql\`CREATE TABLE IF NOT EXISTS "${name}" (${code})\``);
return value
}
throw new Error("该创建数据表已经创建过了")
})
};
searchAll(){
var name = this.name;
return (async () => {
try{
await eval(`db.sql\`SELECT * FROM "${name}"\``)
}catch(e){
if(e.message.search("no such") !== -1 || e.message.search("not an error") !== -1)throw new Error("该数据表未创建");else throw new Error("未知错误")
}
return (await eval(`db.sql\`SELECT * FROM "${name}"\``))
})
};
searchBy(key, value){
var name = this.name;
return (async () => {
try{
await eval(`db.sql\`SELECT * FROM "${name}" WHERE ${key} = ${value}\``)
}catch(e){
if(e.message.search("no such") !== -1 || e.message.search("not an error") !== -1)throw new Error("该数据表未创建");else throw new Error("未知错误")
}
return (await eval(`db.sql\`SELECT * FROM "${name}" WHERE ${key} = ${value}\``))
})
};
into(key, value){
var name = this.name;
return (async () => {
try{
await eval(`db.sql\`SELECT * FROM "${name}"\``)
}catch(e){
if(e.message.search("no such") !== -1 || e.message.search("not an error") !== -1)throw new Error("该数据表未创建");else throw new Error("未知错误")
}
return (await eval(`db.sql\`INSERT INTO "${name}" (${key}) VALUES (${value})\``));
})
};
deleteAll(){
var name = this.name;
return (async () => {
try{
await eval(`db.sql\`SELECT * FROM "${name}"\``)
}catch(e){
if(e.message.search("no such") !== -1 || e.message.search("not an error") !== -1)throw new Error("该数据表未创建");else throw new Error("未知错误")
}
return (await eval(`db.sql\`DELETE FROM "${name}"\``));
})
};
deleteBy(key, value){
var name = this.name;
return (async () => {
try{
await eval(`db.sql\`SELECT * FROM "${name}"\``)
}catch(e){
if(e.message.search("no such") !== -1 || e.message.search("not an error") !== -1)throw new Error("该数据表未创建");else throw new Error("未知错误")
}
return (await eval(`db.sql\`DELETE FROM "${name}" WHERE ${key} = ${value}\``));
})
}
}; <figure class="code-box" contenteditable="false"></figure>
具体怎么用?看下面示例
(async function () {
/*
创建数据库,名称叫 test (名字可以自己修改,)
有v1和v2两个量可储存(名字可以自己修改,还可以增加更多的量,但格式必须依照着我写的那样)
类型分别为TEXT(字符串)和INT(整数)
意思是v1只能存储文本,v2只能
其它数据类型如下:
TEXT : 字符串
INT : 整数,不能有小数点
INTEGER : 整数,不能有小数点
BIGINT : 超大整数,不能有小数点。存储时可以存数字,但查找后返回的是字符串,需要用 parseInt(这里填字符串) 重新转换成数字
REAL : 带有小数点的数字
NULL : 空值,啥也没有
BLOB : 二进制数据(二进制帝...走错了)
NUMERIC : 其他,SQL数据,一般地图暂时用不到
*/
const value = await new SQLite("test").create([
["v1","TEXT"],
["v2","INT"]
])();
world.say(JSON.stringify(value))
})();
(async function () {
/*
往名叫 test 的数据库里存入数据
格式如下
*/
const value = await new SQLite("test").into(
["v1","测试一号"],
["v2",114514]
)();
const value_2 = await new SQLite("test").into(
["v1","测试二号"],
["v2",23333]
)();
world.say(JSON.stringify(value))
world.say(JSON.stringify(value_2))
})();
(async function () {
/*
查找数据库 test 的所有数据
*/
const value = await new SQLite("test").searchAll()();
world.say(JSON.stringify(value))
})();
(async function () {
/* 在数据库 test 里查找所有 v1 是 “测试一号” 的所有数据 */
const value = await new SQLite("test").searchBy("v1","测试一号")();
world.say(JSON.stringify(value))
/* 在数据库 test 里查找所有 v2 是 23333 的所有数据 */
const value = await new SQLite("test").searchBy("v2",23333)();
world.say(JSON.stringify(value))
})();
(async function () {
/* 删掉数据库 test 里的所有数据 */
await new SQLite("test").deleteAll()();
})();
(async function () {
/* 删掉数据库 test 里所有 v2 是 114514 的数据 */
await new SQLite("test").deleteBy("v2",114514)();
})(); <figure class="code-box" contenteditable="false"></figure>
记得关注+三连!
我在BOX3:http://box3.fun/u/3910493 及 http://box.game/u/10069
(代码仅供学习及使用,禁止抄袭盗用)
建议不测box3.cod喵/e/2676629d8f87239f56e3?p=6L0bRtB6HS%2FQR4JjeSo4AYamseHHZmzujMLh6RbJ1lA%2BOAjQ3VLwVndWVzdA%3D%3D
点赞0
评论