没有什么参考价值


Table.sol内容

pragma solidity ^0.4.24;contract TableFactory {/*** @brief 打开表,返回Table合约地址* @param tableName 表的名称* @return 返回Table的地址,当表不存在时,将会返回空地址即address(0x0)*/function openTable(string tableName) public constant returns (Table);/*** @brief 创建表,返回是否成功* @param tableName 表的名称* @param key 表的主键名* @param valueFields 表的字段名,多个字段名以英文逗号分隔* @return 返回错误码,成功为0,错误则为负数*/function createTable(string tableName,int key,string valueFields) public         returns(int);
}// 查询条件
contract Condition {//等于function EQ(string, int) public;function EQ(string, string) public;//不等于function NE(string, int) public;function NE(string, string)  public;//大于function GT(string, int) public;
//大于或等于function GE(string, int) public;//小于function LT(string, int) public;
//小于或等于function LE(string, int) public;//限制返回记录条数function limit(int) public;function limit(int, int) public;
}// 单条数据记录contract Entry {function getInt(string) public constant returns(int);function getAddress(string) public constant returns(address);function getBytes64(string) public constant returns(byte[64]);function getBytes32(string) public constant returns(bytes32);function getString(string) public constant returns(string);function set(string, int) public;function set(string, string) public;function set(string, address) public;
}// 数据记录集contract Entries {function get(int) public constant returns(Entry);function size() public constant returns(int);}// Table主类
contract Table {/*** @brief 查询接口* @param key 查询主键值* @param cond 查询条件* @return Entries合约地址,合约地址一定存在*/function select(int key, Condition cond) public constant returns(Entries);/*** @brief 插入接口* @param key 插入主键值* @param entry 插入字段值* @return 插入影响的行数*/function insert(int key, Entry entry) public returns(int);/*** @brief 更新接口* @param key 更新主键值* @param entry 更新字段值* @param cond 更新条件* @return 更新影响的行数*/function update(int key, Entry entry, Condition cond) public returns(int);/*** @brief 删除接口* @param key 删除的主键值* @param cond 删除条件* @return 删除影响的行数*/function remove(int key, Condition cond) public returns(int);function newEntry() public constant returns(Entry);function newCondition() public constant returns(Condition);
}

任务分配表合约的内容:

pragma solidity >=0.6.10 <0.8.20;pragma experimental ABIEncoderV2;import "./Table.sol";contract TableTest {event CreateResult(int256 count);event InsertResult(int256 count);event UpdateResult(int256 count);event RemoveResult(int256 count);TableFactory tableFactory;string constant TABLE_NAME = "task";constructor() public {tableFactory = TableFactory(0x1001); //The fixed address is 0x1001 for TableFactory// the parameters of createTable are tableName,keyField,"vlaueFiled1,vlaueFiled2,vlaueFiled3,..."tableFactory.createTable(TABLE_NAME, "id", "employer_id,task_desc,employee_id,task_price,task_status");}//新建一个任务表 表中内容:主键为任务id 任务发布者ID 任务描述 任务接受者ID 任务成交金额 任务状态//select recordsfunction select(int memory id) public viewreturns (int256[] memory,int256[] memory, string[] memory,int256[] memory, int256[] memory,int[]memory){Table table = tableFactory.openTable(TABLE_NAME);Condition condition = table.newCondition();Entries entries = table.select(id, condition);//返回任务idint256[] memory id_list = new int256[](uint256(entries.size()));//返回任务发布者IDint256[] memory employer_id_list = new int256[](uint256(entries.size()));//返回任务内容string[] memory task_desc_list = new string[](uint256(entries.size()));//返回任务接受者IDint256[] memory employee_id_list = new int256[](uint256(entries.size()));//返回任务成交金额int256[] memory task_price_list = new int256[](uint256(entries.size()));//返回任务状态int256[] memory task_status_list = new int256[](uint256(entries.size()));for (int256 i = 0; i < entries.size(); ++i) {Entry entry = entries.get(i);id_list[uint256(i)] = entry.getInt("id");employer_id_list[uint256(i)] = entry.getInt("employer_id");task_desc_list[uint256(i)] = entry.getString("task_desc");employee_id_list[uint256(i)] = entry.getInt("employee_id");task_price_list[uint256(i)] = entry.getInt("task_price");task_status_list[uint256(i)] = entry.getInt("task_status");}return (id_list,employer_id_list,task_desc_list,employee_id_list,task_price_list,task_status_list);}//插入任务的记录 根据任务的idfunction insert(int256 id,int256 employer_id, string memory task_desc,int256 employee_id, int256 task_price,int task_status)public returns (int256){Table table = tableFactory.openTable(TABLE_NAME);Entry entry = table.newEntry();entry.set("id", id);entry.set("employer_id", employer_id);entry.set("task_desc", task_desc);entry.set("employee_id", employee_id);entry.set("task_price", task_price);entry.set("task_status", task_status);int256 count = table.insert(id, entry);emit InsertResult(count);return count;}//update recordsfunction update(int256 id,int task_status)public returns (int256){Table table = tableFactory.openTable(TABLE_NAME);Entry entry = table.newEntry();//entry.set("task_desc", task_desc);//更新任务的内容//entry.set("task_price", task_price);//更改任务的奖励entry.set("task_status", task_status);//更新任务的状态Condition condition = table.newCondition();condition.EQ("id", id);//根据任务的id进行更新int256 count = table.update(id,task_status);emit UpdateResult(count);return count;}//删除任务的记录信息function remove(int256 id) public returns (int256) {Table table = tableFactory.openTable(TABLE_NAME);Condition condition = table.newCondition();condition.EQ("id", id);int256 count = table.remove(id, condition);emit RemoveResult(count);return count;}}

mysql数据库中表的信息:

CREATE TABLE `task`  (`id` bigint(0) NOT NULL COMMENT '任务ID',`category_id` bigint(0) NULL DEFAULT NULL COMMENT '任务分类ID',`employer_id` bigint(0) NULL DEFAULT NULL COMMENT '任务发布者ID',`task_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务标题',`task_profile` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务简介',`task_desc` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '任务描述',`fees_low` double NULL DEFAULT NULL COMMENT '最低预算奖励',`fees_high` double NULL DEFAULT NULL COMMENT '最高预算奖励',`fees_file` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务附件地址',`filename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '附件文件名称',`employee_id` bigint(0) NULL DEFAULT NULL COMMENT '完成任务任务接受者ID',`task_price` double NULL DEFAULT NULL COMMENT '任务成交奖励',`task_status` tinyint(0) NULL DEFAULT NULL COMMENT '任务状态',`close_time` timestamp(0) NULL DEFAULT NULL COMMENT '成交时间',`bid_time` timestamp(0) NULL DEFAULT NULL COMMENT '任务申请成功时间',`create_time` timestamp(0) NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

今天先写到这里明天再看

添加了hash匿名性之后:

/*** ClassName:qvkuail* Package:PACKAGE_NAME** @Data:2023/05/08 16:23* @Author:灿灿睡醒了*/
public class qvkuail {pragma solidity >=0.6.10 <0.8.20;pragma experimental ABIEncoderV2;import"./Table.sol";
//在Solidity代码中添加SHA256库,这将使您能够使用SHA256哈希函数对主键id进行哈希处理import"./SHA256.sol";  // 添加SHA256库contract TableTest{event CreateResult (int256 count);event InsertResult (int256 count);event UpdateResult (int256 count);event RemoveResult (int256 count);TableFactory tableFactory;string constant TABLE_NAME = "task";constructor() public {tableFactory = TableFactory(0x1001); //The fixed address is 0x1001 for TableFactory// the parameters of createTable are tableName,keyField,"vlaueFiled1,vlaueFiled2,vlaueFiled3,..."tableFactory.createTable(TABLE_NAME, "id", "employer_id,task_desc,employee_id,task_price,task_status");}//新建一个任务表 表中内容:主键为任务id 任务发布者ID 任务描述 任务接受者ID 任务成交金额 任务状态//select recordsfunction select ( int id)public view
//        function select(bytes32 id_hash) public viewreturns(int256[]memory, int256[]memory, string[]memory, int256[]memory, int256[]memory,int[] memory){Table table = tableFactory.openTable(TABLE_NAME);Condition condition = table.newCondition();//Entries entries = table.select(id_hash, condition);  // 使用哈希值而不是原始id查询表Entries entries = table.select(id, condition);//返回任务idint256[] memory id_list = new int256[] (uint256(entries.size()));//返回任务发布者IDint256[] memory employer_id_list = new int256[] (uint256(entries.size()));//返回任务内容string[] memory task_desc_list = new string[] (uint256(entries.size()));//返回任务接受者IDint256[] memory employee_id_list = new int256[] (uint256(entries.size()));//返回任务成交金额int256[] memory task_price_list = new int256[] (uint256(entries.size()));//返回任务状态int256[] memory task_status_list = new int256[] (uint256(entries.size()));for (int256 i = 0; i < entries.size(); ++i) {Entry entry = entries.get(i);//bytes32 id_hash_temp = bytes32(entry.getInt("id"));//int256 id = int256(id_hash_temp);  // 将哈希值转换为原始id//id_list[uint256(i)] = id;id_list[uint256(i)] = entry.getInt("id");employer_id_list[uint256(i)] = entry.getInt("employer_id");task_desc_list[uint256(i)] = entry.getString("task_desc");employee_id_list[uint256(i)] = entry.getInt("employee_id");task_price_list[uint256(i)] = entry.getInt("task_price");task_status_list[uint256(i)] = entry.getInt("task_status");}return (id_list,employer_id_list, task_desc_list, employee_id_list, task_price_list, task_status_list);}//插入任务的记录 根据任务的idfunction insert (int256 id, int256 employer_id, string task_desc, int256 employee_id, int256 task_price,int task_status)
public returns(int256){Table table = tableFactory.openTable(TABLE_NAME);Entry entry = table.newEntry();//bytes32 id_hash = SHA256.hash(bytes32(id));  // 将id哈希化//entry.set("id", int256(id_hash));  // 将哈希后的id插入到表中entry.set("id", id);entry.set("employer_id", employer_id);entry.set("task_desc", task_desc);entry.set("employee_id", employee_id);entry.set("task_price", task_price);entry.set("task_status", task_status);int256 count = table.insert(id, entry);//int256 count = table.insert(id_hash, entry);  // 将哈希后的id插入到表中emit InsertResult (count);return count;}//更新任务的交易记录function update (int256 id,int task_status)
public returns(int256){Table table = tableFactory.openTable(TABLE_NAME);Entry entry = table.newEntry();//entry.set("task_desc", task_desc);//更新任务的内容//entry.set("task_price", task_price);//更改任务的奖励entry.set("task_status", task_status);//更新任务的状态Condition condition = table.newCondition();condition.EQ("id", id);//根据任务的id进行更新int256 count = table.update(id, task_status);emit UpdateResult (count);return count;}//删除任务的记录信息function remove (int256 id) public returns(int256) {Table table = tableFactory.openTable(TABLE_NAME);Condition condition = table.newCondition();condition.EQ("id", id);int256 count = table.remove(id, condition);emit RemoveResult (count);return count;}}
}

智能合约的编写增删改查相关推荐

  1. koa2 mysql增删改查_koa2对mongodb的增删改查

    构建项目 npm install -g koa-generator koa2 -e projectname npm install mongoose 说明:我们用mongoose来操作mongodb, ...

  2. 详细解析java JDBC实现增删改查

    目录 实现java数据库的增删改查基本步骤 包与类的结构. 一,与数据库建立连接,驱动包导入. ​二,创建实体类(与数据库的属性相一致) 三,创建接口 四,sql语句预编译和执行代码 五,test测试 ...

  3. SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】

    前后端分离项目快速搭建[后端篇] 数据库准备 后端搭建 1.快速创建个SpringBoot项目 2.引入依赖 3.编写代码快速生成代码 4.运行代码生成器生成代码 5.编写application.pr ...

  4. solidity学习一(数据类型、增删改查合约)

    abi-to-sol在线转换 https://gnidan.github.io/abi-to-sol/ 发布合约 https://ropsten.etherscan.io/verifyContract ...

  5. Android 中编写一个简易购物车,商品包括商品名称,单价,数量,可以对商品进行增删改查功能。(ArrayList,SQLite)

    Android 中编写一个简易购物车,商品包括商品名称,单价,数量,可以对商品进行增删改查功能.(ArrayList,SQLite) 布局(activity_main.xml): <?xml v ...

  6. SpringBoot的开发(3)--前端页面的搭建、前端页面的编写、分页和增删改查功能的实现...

    前端页面的搭建 首先我们在resources包下新建一个文件夹static,SpringBoot默认会去把static包下的文件做一个路由 然后在static包下新建一个HTML File类型的文件, ...

  7. node.js编写前端接口,服务器创建、数据库连接、路由挂载,增删改查、分页查询接口的编写

    1.文件准备 我们要准备三个文件来演示最基础的服务器创建.数据库连接路由挂载,增删改查.分页查询接口的编写.其中服务器创建单独一个文件为app.js,数据库连接为一个文件为pool.js,最后一个为接 ...

  8. java从入门到精通二十四(三层架构完成增删改查)

    java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...

  9. Mybatis实现增删改查 -- Mybatis快速入门保姆级教程(二)

    文章目录 前言 五.配置文件完成增删改查 1.学习目标 2.入门案例环境准备 3.查询--查询所有 4.查询--根据id查询 5. 查询--条件查询 6.查询--多条件动态查询 7.条件查询--单条件 ...

最新文章

  1. echarts怎么用在php,在Vue.JS中怎样使用echarts
  2. 多面体的顶点方向以及分解定理以及多胞形凸组合
  3. 共识算法的比较:Casper vs Tendermint
  4. 洛谷P3195 [HNOI2008]玩具装箱TOY
  5. linux iptables配置
  6. linux给指定用户分配文件夹权限
  7. 度量相似性数学建模_数学之美读书笔记
  8. 【转】DataGridView之为每行前面添加序号
  9. 【渝粤教育】国家开放大学2018年秋季 8660-22T (1)农科化学基础知识 参考试题
  10. PostgreSql之pgsql 条件和顺序控制
  11. 计算机二级Java上机环境安装与使用
  12. js 实现pdf在线阅读
  13. 定时任务Quartz 之 cron表达式(时间表达式)
  14. 黑马程序员——银行业务调度系统
  15. 汉庭加盟:连锁酒店影视房的市场分析
  16. python之pandas基础知识以及练习题
  17. 自动(智能)驾驶系列|(一)简介与传感器
  18. 服务器虚拟化 魔力象限,Magic Quadrant for x86 Server Virtualization (魔力象限x86服务器虚拟化).pdf...
  19. 物联网平台由哪些架构组成
  20. 名片管理系统python详解_详解Python做一个名片管理系统

热门文章

  1. 泛泰SKYA840黑砖QHSUSB_DLOAD救砖教程(适用于工程机和正式机)
  2. 蝴蝶效应--不经意间改变人的一生
  3. 和人工智能一起选剧本 | 拍什么电影,AI说了算?
  4. 每天两小时学习编译原理——一个学期的第三天,希望能坚持长久✨
  5. 汽车防振橡胶隔离器安装座的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. 【Babylonjs】材质
  7. Xamarin.Forms——上传图片
  8. Arbitrage(套利)
  9. LTE学习笔记七:LTE的信道
  10. 【Java案例】超市购物