Sqlite工具类

Android SQLite--小巧好用的SQLite GUI管理工具 非常好用的SQLiteSpy 1.8.16 免费正式版(内附有一做好的DB,大家可以马上看下效果)。网上看到的,整理了下,共享给大家! 希望有用! SQLiteSpy是一个快速和紧凑的图形用户界面的SQLite数据库管理软件。它可以读取sqlite3文件并执行SQL。图形用户界面使得它很容易分析和操纵sqlite3的数据库。 注意:SQLiteSpy是免费供个人和教育用途,SQLiteSpy主要特点: 1、数据库一览:树状显示所有的架构,包括表,列,索引和触发器在数据库中包含的项目。按F5更新架构树,双击一个表或视图来显示它的数据,使用常用的命令的上下文菜单。 2、网格单元格编辑:表格单元格中编辑,显示一个表通过树状架构,选择一个单元格,然后按F2键调用编辑器。然后修改并确认您的更改写回到表里。 3、数据类型显示:本机的SQL数据类型显示不同的背景颜色来帮助检测类型错误。类型错误可能会导致性能下降或错误的SELECT结果集,防止NULL值与空字符串混淆。 4、完全的Unicode: SQLiteSpy具有完全支持SQLite的Unicode的能力。数据显示和输入是完全实现为Unicode,包括SQL命令。 5、多个SQL编辑:现代标签是用来编辑和显示的查询语句和结果比较容易多个SQL查询。 SQL查询执行输入或加载到SQL他们编辑。然后按F9键运行该查询,或Ctrl + F9来运行当前行或选择只。 6、时间测量: SQL执行的时间会自动测量和显示,以帮助优化查询。 7、正则表达式:在SQL关键字regexp是支持,并增加了完整的Perl的正则表达式语法5.10 SQLiteSpy。的实施,实现了利用DIRegEx库。 8、数学SQL函数:下面的SQL函数可用数学除了SQLite的默认:ACOS(), ASIN(), ATAN(), ATAN(), ATAN2(), CEIL(), CEILING(), COS(), COT(), DEGREES(), EXP(), FLOOR(), LN(), LOG(), LOG(), LOG2(), LOG10(), MOD(), PI(), POW(), RADIANS(), SIGN(), SIN(), SQRT(), TAN(), TRUNCATE(). 9、数据压缩:压缩的SQL函数()适用的zlib的紧缩到任何文本或BLOB值。 10、紧凑型结果储存:使用内部数据存储机制,以达到最佳的兼容SQLite的原生数据类型。因此,SQLiteSpy使用远低于其它的SQLite管理内存和更有效地处理大量的表。 11、内建的SQLite引擎: SQLiteSpy已建成一个单一的应用程序文件与SQLite数据库引擎可执行文件。不需要部署任何DLL文件,这使得SQLiteSpy更易于部署。 12、加密支持: SQLiteSpy可以阅读和修改加密的数据库文件由DISQLite3产生。 DISQLite3实现了自己的母语AES加密。这为不符合商业SQLite的加密扩展(SSE)的或任何其他第三方的实施提供兼容。 13、易安装和卸载:要运行SQLiteSpy,只需解压SQLiteSpy.exe文件到任何目录和执行文件。不需要安装。刚开始时,该程序创建一个文件SQLiteSpy.db3(1 sqlite3的数据库)来存储的和设置。它不写任何其他文件或注册表。卸载一样只是简单的删除两个文件:应用程序的可执行文件和数据库文件。 立即下载
  1. package com.asc.db;  
  2.   
  3. import android.content.ContentValues;  
  4. import android.content.Context;  
  5. import android.database.Cursor;  
  6. import android.database.sqlite.SQLiteDatabase;  
  7. import android.database.sqlite.SQLiteOpenHelper;  
  8.   
  9. /** 
  10.  * 数据库公共类,提供基本数据库操作 
  11.  *  
  12.  * @author raymon 
  13.  *  
  14.  */  
  15. public class DBManager {  
  16.     // 默认数据库  
  17.     private static final String DB_NAME = "asc.db";  
  18.   
  19.     // 数据库版本  
  20.     private static final int DB_VERSION = 1;  
  21.   
  22.     // 执行open()打开数据库时,保存返回的数据库对象  
  23.     private SQLiteDatabase mSQLiteDatabase = null;  
  24.   
  25.     // 由SQLiteOpenHelper继承过来  
  26.     private DatabaseHelper mDatabaseHelper = null;  
  27.   
  28.     // 本地Context对象  
  29.     private Context mContext = null;  
  30.       
  31.     private static DBManager dbConn= null;  
  32.       
  33.     // 查询游标对象  
  34.     private Cursor cursor;  
  35.   
  36.     /** 
  37.      * SQLiteOpenHelper内部类 
  38.      */  
  39.     private static class DatabaseHelper extends SQLiteOpenHelper {  
  40.   
  41.         DatabaseHelper(Context context) {  
  42.             // 当调用getWritableDatabase()或 getReadableDatabase()方法时,创建一个数据库  
  43.             super(context, DB_NAME, null, DB_VERSION);  
  44.         }  
  45.   
  46.         @Override  
  47.         public void onCreate(SQLiteDatabase db) {  
  48.             db.execSQL("CREATE TABLE ad_record(id PRIMARY KEY NOT NULL, adUrl TEXT, apMac TEXT, createDate DATETIME);");  
  49.         }  
  50.   
  51.         @Override  
  52.         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  53.             db.execSQL("DROP TABLE IF EXISTS ad_record");  
  54.             onCreate(db);  
  55.         }  
  56.     }  
  57.   
  58.     /** 
  59.      * 构造函数 
  60.      *  
  61.      * @param mContext 
  62.      */  
  63.     private DBManager(Context mContext) {  
  64.         super();  
  65.         this.mContext = mContext;  
  66.     }  
  67.       
  68.     public static DBManager getInstance(Context mContext){  
  69.         if (null == dbConn) {  
  70.             dbConn = new DBManager(mContext);  
  71.         }  
  72.         return dbConn;  
  73.     }  
  74.   
  75.     /** 
  76.      * 打开数据库 
  77.      */  
  78.     public void open() {  
  79.         mDatabaseHelper = new DatabaseHelper(mContext);  
  80.         mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();  
  81.     }  
  82.   
  83.     /** 
  84.      * 关闭数据库 
  85.      */  
  86.     public void close() {  
  87.         if (null != mDatabaseHelper) {  
  88.             mDatabaseHelper.close();  
  89.         }  
  90.         if (null != cursor) {  
  91.             cursor.close();  
  92.         }  
  93.     }  
  94.   
  95.     /** 
  96.      * 插入数据 
  97.      * @param tableName 表名 
  98.      * @param nullColumn null 
  99.      * @param contentValues 名值对 
  100.      * @return 新插入数据的ID,错误返回-1 
  101.      * @throws Exception 
  102.      */  
  103.     public long insert(String tableName, String nullColumn,  
  104.             ContentValues contentValues) throws Exception {  
  105.         try {  
  106.             return mSQLiteDatabase.insert(tableName, nullColumn, contentValues);  
  107.         } catch (Exception e) {  
  108.             throw e;  
  109.         }  
  110.     }  
  111.   
  112.     /** 
  113.      * 通过主键ID删除数据 
  114.      * @param tableName 表名 
  115.      * @param key 主键名 
  116.      * @param id 主键值 
  117.      * @return 受影响的记录数 
  118.      * @throws Exception 
  119.      */  
  120.     public long delete(String tableName, String key, int id) throws Exception {  
  121.         try {  
  122.             return mSQLiteDatabase.delete(tableName, key + " = " + id, null);  
  123.         } catch (Exception e) {  
  124.             throw e;  
  125.         }  
  126.     }  
  127.       
  128.     /** 
  129.      * 查找表的所有数据 
  130.      * @param tableName 表名 
  131.      * @param columns 如果返回所有列,则填null 
  132.      * @return 
  133.      * @throws Exception 
  134.      */  
  135.     public Cursor findAll(String tableName, String [] columns) throws Exception{  
  136.         try {  
  137.             cursor = mSQLiteDatabase.query(tableName, columns, null, null, null, null, null);  
  138.             cursor.moveToFirst();  
  139.             return cursor;  
  140.         } catch (Exception e) {  
  141.             throw e;  
  142.         }  
  143.     }  
  144.       
  145.     /** 
  146.      * 根据主键查找数据 
  147.      * @param tableName 表名 
  148.      * @param key 主键名 
  149.      * @param id  主键值 
  150.      * @param columns 如果返回所有列,则填null 
  151.      * @return Cursor游标 
  152.      * @throws Exception  
  153.      */  
  154.     public Cursor findById(String tableName, String key, int id, String [] columns) throws Exception {  
  155.         try {  
  156.             return mSQLiteDatabase.query(tableName, columns, key + " = " + id, null, null, null, null);  
  157.         } catch (Exception e) {  
  158.             throw e;  
  159.         }  
  160.     }  
  161.       
  162.     /** 
  163.      * 根据条件查询数据 
  164.      * @param tableName 表名 
  165.      * @param names 查询条件 
  166.      * @param values 查询条件值 
  167.      * @param columns 如果返回所有列,则填null 
  168.      * @param orderColumn 排序的列 
  169.      * @param limit 限制返回数 
  170.      * @return Cursor游标 
  171.      * @throws Exception 
  172.      */  
  173.     public Cursor find(String tableName, String [] names, String [] values, String [] columns, String orderColumn, String limit) throws Exception{  
  174.         try {  
  175.             StringBuffer selection = new StringBuffer();  
  176.             for (int i = 0; i < names.length; i++) {  
  177.                 selection.append(names[i]);  
  178.                 selection.append(" = ?");  
  179.                 if (i != names.length - 1) {  
  180.                     selection.append(",");  
  181.                 }  
  182.             }  
  183.             cursor = mSQLiteDatabase.query(true, tableName, columns, selection.toString(), values, null, null, orderColumn, limit);  
  184.             cursor.moveToFirst();  
  185.             return cursor;  
  186.         } catch (Exception e) {  
  187.             throw e;  
  188.         }  
  189.     }  
  190.       
  191.     /** 
  192.      *  
  193.      * @param tableName 表名 
  194.      * @param names 查询条件 
  195.      * @param values 查询条件值 
  196.      * @param args 更新列-值对 
  197.      * @return true或false 
  198.      * @throws Exception 
  199.      */  
  200.     public boolean udpate(String tableName, String [] names, String [] values, ContentValues args) throws Exception{  
  201.         try {  
  202.             StringBuffer selection = new StringBuffer();  
  203.             for (int i = 0; i < names.length; i++) {  
  204.                 selection.append(names[i]);  
  205.                 selection.append(" = ?");  
  206.                 if (i != names.length - 1) {  
  207.                     selection.append(",");  
  208.                 }  
  209.             }  
  210.             return mSQLiteDatabase.update(tableName, args, selection.toString(), values) > 0;  
  211.         } catch (Exception e) {  
  212.             throw e;  
  213.         }  
  214.     }  
  215.       
  216.     /** 
  217.      * 执行sql语句,包括创建表、删除、插入 
  218.      *  
  219.      * @param sql 
  220.      */  
  221.     public void executeSql(String sql) {  
  222.         mSQLiteDatabase.execSQL(sql);  
  223.     }  
  224.   
  225. } //原文: http://forhope.iteye.com/blog/1461412
Android开发中的SQLite数据库的增删改查工具类 手写简化适用于安卓开发中的SQLite数据库工具类,包含数据的增删改查,适用于各个需要本地数据库开发。 立即下载

相关推荐

国产AI芯片实战:用寒武纪MLU370低成本部署DeepSeek-R1,实测推理效果与成本分析

本文详细介绍了寒武纪MLU370芯片在部署DeepSeek-R1大模型时的实战效果与成本优势。通过实测数据对比,MLU370在推理速度、能效比和本地化服务方面表现突出,尤其适合智能客服、内容生成等场景,可显著降低硬件投入和运维成本。

weixin_30613727的博客 455

Android开发——SQLite数据库的使用

在Android中应用程序需要处理大量并发连接、高并发读写等高负载场景,SQLite可能会表现出性能瓶颈,不如传统的关系型数据库管理系统(RDBMS),因此不建议在这些场景中使用SQLite。SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。我们先需要建立一个数据库对象,以读的方式打开,并指定数据库的位置。在onCreate方法里面,防止第一次点击的时候,没有user.db这个文件,因此写了一个创建db文件的代码。当表头为null的时候为全部读取。

Krisit的博客 5332

UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-4: ordinal not in range(128)

python3报错处理:UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-4: ordinal not in range(128) 一、报错场景 // 报错代码 Traceback (most recent call last): File "test_autoo3_2.py", line 214, in <module> main() File "test_autoo3_2.py",

浪里小飞侠的博客 4200

Android Studio 数据库Sqlite3 安卓工具类(简便开发)

目录一、数据库查看方式二、封装工具类三、使用Sqlite工具类(直接调用)1.增2.删3.改4.查使用App Inspection工具,此工具包括网络请求、数据库访问等功能,可以实时监控应用的行为。如图所示:源码:DatabaseHelper.java 实体类定义,查询使用,只用增、删、改 不用添加。UserBean .java 三、使用Sqlite工具类(直接调用) 1.增 2.删 3.改 4.查

Yun_yichen的博客 2186

ROS2+MoveIt2+Gazebo仿真实战:从零搭建六轴机械臂控制闭环

本文详细介绍了如何从零搭建一个完整的ROS2+MoveIt2+Gazebo六轴机械臂仿真控制闭环。通过手写URDF模型、配置MoveIt2运动规划、集成Gazebo物理仿真与ROS2 Control控制器,最终实现RViz中规划轨迹、Gazebo中同步执行的完整数字孪生验证平台,为机器人算法开发和硬件验证提供低成本、高效的仿真解决方案。

weixin_29093017的博客 484

第三天:Python基础语法详解

Python代码规范与注释最佳实践 摘要: 本文深度解析Python缩进规则与代码结构的技术规范,包括缩进的底层原理、语法规则和错误处理。详细阐述Python注释系统,涵盖行内注释、文档字符串和类型注释等多种形式,并提供工业级代码组织方案。研究显示,良好的缩进可提升40%的代码识别速度,降低50%的认知负荷。文章还对比了Sphinx、pdoc等主流文档生成工具,给出企业级项目中的注释编写原则和模板建议,帮助开发者构建更可维护的Python代码。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1011

Android : SQLite 增删改查—简单应用

Android : SQLite 增删改查—简单应用

javaGHui的博客 1111

智慧安防:基于Java+YOLOv8的视频AI识别平台设计与实现

张工,我们的园区智慧安防项目又出问题了!用Python写的YOLOv8 demo,拉3路RTSP流就卡,视频延迟超过5秒,入侵检测误报率太高,一到晚上光线差就全是误报,而且和我们的Java安防平台对接太麻烦,还要搭个消息队列,架构复杂得要死!“别慌,用Java+YOLOv8啊!

2601_94871597的博客 196

Android SQLite 一个工具类搞定基本的数据增删改查

最近因为项目需要,不能使用第三方的数据库工具了,比如 ormlite。所以自己写了一个工具类,可以完成基本的增删改查的通用SQlite工具,很长时间没有怎么研究过SQLite,写的不好的地方,请见谅,使用有什么问题可以留言,我尽能力解决,有建议也很欢迎提出。另外其中会用到LogUtil.("","");方法,这个是自己封装的一个log类,也会在下面贴出来,很简单。

syypyx的专栏 3574

【27】软考软件设计师——数据流图(DFD)补全题满分精讲|下午15分大题深度拆解

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第27篇,深度精讲**下午案例题第1道必考大题:数据流图(DFD)补全**,该题单题分值高达**12 ~ 15分**,是整张试卷最稳的保底得分大题。我结合多年备考复盘与真题阅卷规则,超详细拆解DFD四大核心元素标准定义、机考绘图规范、三层分层逻辑、**父图子图平衡刚性扣分规则**,升级强化版「DFD满分补全三步法」;复刻历年高频真题完整流程,拆解缺失数据流定位、实体/存储辨析、平衡改错、文字需求对照全流程,配套**阅卷满分答题话术、机考避坑细则

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 589

使用Verilog实现QR分解——嵌入式 [设计与代码]

通过Verilog的硬件描述语言,我们可以将QR分解算法实现为硬件电路,并在嵌入式系统中高效地运行。本文将介绍如何使用Verilog设计并实现QR分解算法,该算法用于将一个矩阵分解为正交矩阵Q和上三角矩阵R。具体而言,QR分解通过对矩阵的列进行正交化处理,得到正交矩阵Q,并将对应的正交化结果存储在上三角矩阵R中。该算法通过将矩阵分解为两个部分,正交矩阵Q和上三角矩阵R,实现了对矩阵的分解和变换。模块,该模块接收待分解矩阵A,并输出正交矩阵Q和上三角矩阵R。下面给出了使用Verilog实现QR分解的源代码。

CodeMaven的博客 620

java sqlite 工具类_sqlite工具类

package com.asc.db;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLit...

weixin_39678426的博客 610

各大厂薪资对比爬虫:Python采集OfferShow爆料数据

print(f"⚠️ API返回错误码: {data.get('code')}, msg: {data.get('msg')}")ax.set_title('各大厂薪资对比 (基于OfferShow爆料数据)', fontsize=16, fontweight='bold')stats.columns = ['人数', '平均年薪', '年薪中位数', '年薪标准差', '平均月薪', '平均月数']print(analyzer.get_position_stats('字节跳动').head(10))

2201_76125261的博客 602

Java 操作 sqlite 工具类

项目中通过 db 文件来上传数据,导出数据也需要导出成 db 文件。需要通过 sqlite 来读写 db 文件,实现创建表,插入数据,查询数据方法。

1101

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SQLite 工具类 SQLiteDB

【代码】SQLite 工具类 SQLiteDB。

学长的猫的博客 490

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SQLite3 JDBC Java工具类

结合阿里的Druid连接池,封装了个多线程安全的SQLite工具类。就2个Class,就能满足需要。示例类读取的数据库配置文件,IDEA为例放在工程的src/main/resources路径下,其它开发工具的话,只要确保classpath包含了配置文件。有一堆小工具,平时因为mysql用着方便,配置啊,临时的一些比对数据存在里面。根据配置文件,可以看到我们把数据库默认放在工程路径下的data/sqlite.db,需要改名字的话,自己改配置文件即可。

蓝星极盾 979

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C#中SQLite的使用及工具类

SQLite简介# SQLite是一款轻型的数据库,一个数据库就是一个文件,详细介绍参考官网:https://www.sqlite.org/index.html SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。 您可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关。 SQLite数据与vb.net教程常见的MySQL、SQ

chinaherolts2008的博客 1872

SQLite工具类

//添加 System.Data.SQLite.dll 方可使用 using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.Linq; using System.Text; namespace Deep.SQLite { /// &l...

这里没有晦涩理论,只有项目踩坑实录、问题速解、效率工具、源码封装与架构思路。专注项目实战,用最简单直白的方式,带你轻松搞定开发难题,高效写码,快乐下班。 685

python连接sqlite3工具类

简单使用python链接sqlite3工具类,代码可根据场景自行抽象。

小小的木头人的博客 989

java sqlite util 工具类,测试类

准备工作:下载sqlite-jdbc的jar包可以从maven 仓库下载:https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.19.3java操作sqlite数据库简单的工具类:import java.lang.reflect.Method; import java.sql.Connection; import java.sql.D

殷长庆的博客 2245

封装sqlite工具类

思路解释 关闭数据库的时候,需要用局部变量保存QSqlDatabase对象,不然在移除数据库链接的时候会报内存泄漏警告 在进行增删改查之前,首先调用HasValidConnection判断是否有有效的数据库链接,然后GetConnectionName,利用返还的数据库链接名再获取数据库链接对象。注意,这里也需要使用局部变量来保存数据库链接,不然最后移除的时候可能会报内存泄漏 在进行增删改查之前,...

weixin_44231643的博客 878

javafx集成Sqlite工具类,包含增删改查范例

javafx集成Sqlite工具类 * 包含增删改查范例 package com.hq.utils; import com.hq.database.entity.CollectionBox; import com.hq.database.entity.Patch; import com.hq.view.CollectionFrame; import java.sql.*; import jav...

u012698467的博客 3849

C# Sqlite工具类

久未写博客。。。除了上代码依然不知道说啥,这就只是一个封装了数据库命令的工具参考了雨松的工具类 http://www.xuanyusong.com/archives/831只是在条件方便改写了一下,增加了 Operation 类,通过组合类实现条件的编写new DbLogicalAND(new DbCompareLessThan("id","10"), new DbCompareNotEqual(...

小鱼游戏开发的博客 1903

C# sqlite 操作工具类

本文介绍了一个功能全面的C# SQLite数据库工具类,主要特点包括: 基础功能完善:提供连接管理、DDL表操作、增删改查等基础数据库操作,支持自动释放资源 ORM支持:通过特性标记实现对象关系映射,包括表名映射、字段类型定义、主键自增、忽略字段等 多样化的操作方式: 支持实体操作和原生SQL操作 提供同步和异步两种调用方式 实现链式调用语法(类似MyBatis Wrapper) 提供InsertOrUpdate合并操作 类型安全: 使用枚举替代字符串定义字段类型和运算符 严格参数校验 完善的异常处理 扩展

weixin_41782226的博客 248

【python】python 操作sqlite 日期的工具类

在Python中,可以使用datetime模块来操作日期和时间。该模块提供了许多方法和属性,使得我们可以方便地创建、比较和格式化日期和时间对象。在SQLite中,日期和时间被存储为文本字符串,格式为YYYY-MM-DD(日期)和HH:MM:SS.SSS(时间),其中SS.SSS表示秒和毫秒。SQLite还提供了一些日期和时间相关的函数,如date()、time()和datetime()等。

zhipengit 1553

SQLite 增删改查的工具类

SQLite 增删改查的工具类

孤狼 333
上一篇: Android程序中像素(px)跟单位dp(dip)之间的转换
下一篇: android 实现流媒体播放远程mp3文件代码
onlywaitforyou
博客等级 码龄15年 6粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值