C#连接、访问MySQL数据库

【MySQL】C# 连接MySQL 安装完MySQL之后,在安装的默认目录 C:Program Files (x86)MySQLConnector NET 8.0 中查找MySQLData.dll文件。因为作者精力有限,文章中难免出现一些错漏,敬请广大专家和网友批评、指正。在Visual Studio 中为项目中添加引用。 阅读详情

一、准备工具

visual stuido(本示例使用visual studio 2010)

MySql.Data.dll

mysql_installer_community_V5.6.21.1_setup.1415604646.msi(网上搜索去下载或者向我索要,联系方式在http://xunwn.com/1010100)

二、新建DBUtility通用访问MySQL类库

1、在解决方案中新建一个DBUtility类库,作为访问MySQL的通用sql语句存放地点



2、引入MySql.Data.dll



3、配置web.config MySQL数据库连接字符串

在解决方案根目录下打开web.config配置文件,在connectionStrings节点中加入MySQL连接字符串

1

2

3

<connectionStrings>

  <add name="DBConnectionString" connectionString="Data Source=127.0.0.1;Database=你的数据库名;User ID=用户名;Password=密码" providerName="MySql.Data.MySqlClient"/>

</connectionStrings>

4、新建SQLHelper通用MySQL访问类,该类的定义如下:  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

/// <summary>

    ///SQLHelper 的摘要说明

    /// </summary>

    public abstract class SQLHelper

    {

        //数据库连接字符串(注意:这里的“DBConnectionString”一定要与web.config文件中connectionStrings节点值一致)

        public static readonly string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ToString();

 

 

        // 用于缓存参数的HASH表

        private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

 

 

        /// <summary>

        ///  给定连接的数据库用假设参数执行一个sql命令(不返回数据集)

        /// </summary>

        /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

        /// <param name="cmdText">存储过程名称或者sql命令语句</param>

        /// <param name="commandParameters">执行命令所用参数的集合</param>

        /// <returns>执行命令所影响的行数</returns>

        public static int ExecuteNonQuery(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters)

        {

 

 

            MySqlCommand cmd = new MySqlCommand();

 

 

            using (MySqlConnection conn = new MySqlConnection(connectionString))

            {

                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

                int val = cmd.ExecuteNonQuery();

                cmd.Parameters.Clear();

                return val;

            }

        }

 

 

        /// <summary>

        /// 用执行的数据库连接执行一个返回数据集的sql命令

        /// </summary>

        /// <remarks>

        /// 举例:

        ///  MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));

        /// </remarks>

        /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

        /// <param name="cmdText">存储过程名称或者sql命令语句</param>

        /// <param name="commandParameters">执行命令所用参数的集合</param>

        /// <returns>包含结果的读取器</returns>

        public static MySqlDataReader ExecuteReader(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters)

        {

            //创建一个MySqlCommand对象

            MySqlCommand cmd = new MySqlCommand();

            //创建一个MySqlConnection对象

            MySqlConnection conn = new MySqlConnection(connectionString);

 

 

            //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,

            //因此commandBehaviour.CloseConnection 就不会执行

            try

            {

                //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数

                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

                //调用 MySqlCommand  的 ExecuteReader 方法

                MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                //清除参数

                cmd.Parameters.Clear();

                return reader;

            }

            catch

            {

                //关闭连接,抛出异常

                conn.Close();

                throw;

            }

        }

 

 

        /// <summary>

        /// 返回DataSet

        /// </summary>

        /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

        /// <param name="cmdText">存储过程名称或者sql命令语句</param>

        /// <param name="commandParameters">执行命令所用参数的集合</param>

        /// <returns></returns>

        public static DataSet GetDataSet(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters)

        {

            //创建一个MySqlCommand对象

            MySqlCommand cmd = new MySqlCommand();

            //创建一个MySqlConnection对象

            MySqlConnection conn = new MySqlConnection(connectionString);

 

 

            //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,

 

 

            try

            {

                //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数

                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

                //调用 MySqlCommand  的 ExecuteReader 方法

                MySqlDataAdapter adapter = new MySqlDataAdapter();

                adapter.SelectCommand = cmd;

                DataSet ds = new DataSet();

 

 

                adapter.Fill(ds);

                //清除参数

                cmd.Parameters.Clear();

                conn.Close();

                return ds;

            }

            catch (Exception e)

            {

                throw e;

            }

        }

 

 

 

        /// <summary>

        /// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列

        /// </summary>

        /// <remarks>

        ///例如:

        ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));

        /// </remarks>

        /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

        /// <param name="cmdText">存储过程名称或者sql命令语句</param>

        /// <param name="commandParameters">执行命令所用参数的集合</param>

        /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>

        public static object ExecuteScalar(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters)

        {

            MySqlCommand cmd = new MySqlCommand();

 

 

            using (MySqlConnection connection = new MySqlConnection(connectionString))

            {

                PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

                object val = cmd.ExecuteScalar();

                cmd.Parameters.Clear();

                return val;

            }

        }

 

 

        /// <summary>

        /// 将参数集合添加到缓存

        /// </summary>

        /// <param name="cacheKey">添加到缓存的变量</param>

        /// <param name="commandParameters">一个将要添加到缓存的sql参数集合</param>

        public static void CacheParameters(string cacheKey, params MySqlParameter[] commandParameters)

        {

            parmCache[cacheKey] = commandParameters;

        }

 

 

        /// <summary>

        /// 找回缓存参数集合

        /// </summary>

        /// <param name="cacheKey">用于找回参数的关键字</param>

        /// <returns>缓存的参数集合</returns>

        public static MySqlParameter[] GetCachedParameters(string cacheKey)

        {

            MySqlParameter[] cachedParms = (MySqlParameter[])parmCache[cacheKey];

 

 

            if (cachedParms == null)

                return null;

 

 

            MySqlParameter[] clonedParms = new MySqlParameter[cachedParms.Length];

 

 

            for (int i = 0, j = cachedParms.Length; i < j; i++)

                clonedParms[i] = (MySqlParameter)((ICloneable)cachedParms[i]).Clone();

 

 

            return clonedParms;

        }

 

 

        /// <summary>

        /// 准备执行一个命令

        /// </summary>

        /// <param name="cmd">sql命令</param>

        /// <param name="conn">OleDb连接</param>

        /// <param name="trans">OleDb事务</param>

        /// <param name="cmdType">命令类型例如 存储过程或者文本</param>

        /// <param name="cmdText">命令文本,例如:Select * from Products</param>

        /// <param name="cmdParms">执行命令的参数</param>

        private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)

        {

            if (conn.State != ConnectionState.Open)

                conn.Open();

 

 

            cmd.Connection = conn;

            cmd.CommandText = cmdText;

 

 

            if (trans != null)

                cmd.Transaction = trans;

 

 

            cmd.CommandType = cmdType;

 

 

            if (cmdParms != null)

            {

                foreach (MySqlParameter parameter in cmdParms)

                {

                    if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&

                        (parameter.Value == null))

                    {

                        parameter.Value = DBNull.Value;

                    }

                    cmd.Parameters.Add(parameter);

                }

            }

        }

 

 

    }

 

三、访问MySQL数据库(增删查改)

提示:sql语句无论是oracle、mysql、sqlserver,增删查改语句大体相似,皆为insert、delete、update、select操作,故熟悉一种数据库操作语句后,亦可相对容易学习其他数据库语句

1

2

3

4

5

using System.Collections.Generic;

using System.Text;

using MySql.Data.MySqlClient;

using System.Data;

using DBUtility;

  

1、插入操作(insert)

示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

public int Add( int userId, string name)

{

    StringBuilder sb = new StringBuilder();

    sb.Append("INSERT INTO T_Photo(Name,UserID) ");

    sb.Append("VALUES(?Name,?UserID) ");

    MySqlParameter[] parameters = {

                                     new MySqlParameter("?Name", MySqlDbType.String),

                                     new MySqlParameter("?UserID", MySqlDbType.Int32)

                                 };

    parameters[0].Value = name;

    parameters[1].Value = userId;

    return SQLHelper.ExecuteNonQuery(sb.ToString(), CommandType.Text, parameters);

}

  

2、删除操作(delete)

示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

public int Delete(long id, int userId)

{

    StringBuilder sb = new StringBuilder();

    sb.Append("DELETE FROM T_Photo WHERE ID = ?ID AND UserID = ?UserID");

    MySqlParameter[] parameters = {

                                     new MySqlParameter("?ID", MySqlDbType.Int64),

                                     new MySqlParameter("?UserID", MySqlDbType.Int32)

                                 };

    parameters[0].Value = id;

    parameters[1].Value = userId;

    return SQLHelper.ExecuteNonQuery(sb.ToString(), CommandType.Text, parameters);

}

  

3、修改操作(update)

示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

public int EditName(long id, int userId, string name)

{

    StringBuilder sb = new StringBuilder();

    sb.Append("UPDATE T_Photo SET Name = ?Name WHERE ID = ?ID AND UserID = ?UserID");

    MySqlParameter[] parameters = {

                                     new MySqlParameter("?ID", MySqlDbType.Int64),

                                     new MySqlParameter("?UserID", MySqlDbType.Int32),

                                     new MySqlParameter("?Name", MySqlDbType.String)

                                 };

    parameters[0].Value = id;

    parameters[1].Value = userId;

    parameters[2].Value = name;

    return SQLHelper.ExecuteNonQuery(sb.ToString(), CommandType.Text, parameters);

}

  

4、查询操作(select)

示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

public MySqlDataReader GetListByOrderCode(string orderCode)

{

    StringBuilder sb = new StringBuilder();

    sb.Append("SELECT ID,OrderCount,Subtotal,ProductID, ");

    sb.Append("FROM t_orderdetail  ");

 

 

    //筛选条件

    sb.Append("WHERE OrderCode = ?OrderCode ");

 

 

    //排序

    sb.Append("ORDER BY ID DESC ");

 

 

    MySqlParameter[] parameters = {

                                     new MySqlParameter("?OrderCode", MySqlDbType.String)

                                 };

 

 

    parameters[0].Value = orderCode;

    return SQLHelper.ExecuteReader(sb.ToString(), CommandType.Text, parameters);

 

}

  

5、调用存储过程

示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

public int BackOrder(long id)

{

    StringBuilder sb = new StringBuilder();

 

 

    sb.Append("BackOrder ");//存储过程名称

 

 

    MySqlParameter[] parameters = {

                                     new MySqlParameter("?OrderId", MySqlDbType.Int64)//OrderId必须与存储过程参数名、数据类型一致

                                 };

    parameters[0].Value = id;

    return MyCustomSQLHelper.ExecuteNonQuery(sb.ToString(), CommandType.StoredProcedure, parameters);

}

C# 通过 mysql.data.dll 链接 MySQL 数据库 C# 通过 mysql.data.dll 链接 MySQL 数据库1. 下载 mysql.data.dll2. 引用 mysql.data.dll3. 创建链接类4. 执行语句查看 1. 下载 mysql.data.dll 官网去下载: https://dev.mysql.com/downloads/windows/visualstudio/ 2. 引用 mysql.data.dll 3. 创建链接类 using MySql.Data.MySqlClient; using System; using 阅读详情

相关推荐

C#操作Mysql数据库的MySql.Data.dll下载

CSharp操作Mysql数据库需要的动态库,包含多个版本的MySql.Data.dll下载。

C# 连接 MySQL 数据库

C# 使用 MySQL 数据库的情况还是比较少的,大部分使用 Windows 平台一般使用 SQL Server,在两年前我买过100元一年的学生服务器,当时也是买着玩的,装 MySQL 数据库使用起来就非常卡,也不知道为什么,但 SQL Server 操作起来不但不卡,还非常的流畅,但是 SQL Server 安装起来比较麻烦,卸载也容易出问题,尤其是盗版系统,我在工作中,也出现了几次 SQL Server 卸载不了的事,我自己电脑用的正版Win10系统,从没出现这种事。

熊思雨的博客 3万+

精通DC-DC变换器:Boost升压电路全解析

Boost升压变换器是一种将低直流电压转换为高直流电压的常用电路。其核心工作原理是通过电感储能:开关导通时电感充电,关断时电感与电源串联向负载供电。关键公式表明输出电压Vo=Vi/(1-D),占空比D越大,升压比越高。变换器工作时会产生电感电流纹波和输出电压纹波,需合理选择电感和电容参数。开关管和二极管需承受完整的输出电压,对元器件选型要求较高。理解这些原理是设计高效升压电源的基础。

2511_92918351的博客 3710

c#访问linux下的mysql_C#在局域网中连接Liunx上的MySql数据库

前期准备工作:我所用的平台是VS2010和Ubuntu 14.04.3 LTS一、由于MySql并没有集成在VS2010中所以要先安装MySQL Connector Net 6.9.8连接工具,可以在官网上下载,连接如下:http://dev.mysql.com/downloads/connector/net/二、你安装的目录中你会找到Assemblies这个文件夹,在这个文件夹中你会发现V2....

weixin_42453228的博客 633

SNN目标识别MNIST

总体来说这篇论文提出的方法用了多种更精密的细节,如LIF膜电位公式,三种STDP方法,但我觉得还可以有很大的改进,比如输入层全连接到兴奋层,兴奋层通过抑制层实现的侧向抑制,抑制层不参与学习等等。尤其是兴奋层通过抑制层实现侧向抑制这里,当神经元兴奋时,通过抑制层再倒回兴奋层,所抑制的已经经过一了一段时间的延迟。如有错误,请不吝赐教。

m0_74982304的博客 1263

Android 人像分割实战:OpenCV+YOLOv8+NCNN 三库联动(附 GPU 加速 / 内存优化全方案)

本文详细介绍了在Android项目中集成OpenCV+YOLOv8+NCNN实现实时人像分割的技术方案。主要内容包括:项目环境搭建(配置NDK、添加Native模块)、核心库文件集成(OpenCV、NCNN、YOLOv8模型)、JNI接口设计与实现(Kotlin层调用C++算法)。通过Camera API获取图像数据,使用YOLOv8进行人体检测,结合NCNN高性能推理框架实现人像分割处理,最终将原始画面与分割结果(背景透明)同时显示在Android界面上。该项目采用多技术栈协同工作,OpenCV负责图像处

FJN110的博客 235

bll调用mysql存储过程_C#连接、访问MySQL数据库

一、准备工具visual stuido(本示例使用visual studio 2010)MySql.Data.dllmysql_installer_community_V5.6.21.1_setup.1415604646.msi二、新建DBUtility通用访问MySQL类库1、在解决方案中新建一个DBUtility类库,作为访问MySQL的通用sql语句存放地点2、引入MySql.Data.dl...

weixin_30803379的博客 218

基于STM32设计的智能家居控制系统(华为云)_363

本项目设计并实现了一种基于STM32的智能家居控制系统,融合了语音识别、远程控制、环境监测与安全报警等功能。系统以STM32F103C8T6单片机为核心控制器,集成ESP8266 Wi-Fi模块实现与华为云IOT物联网平台的数据交互,采用MQTT协议进行通信。用户可通过语音识别模块控制风扇、空调、窗帘、卧室灯、客厅灯和电视等家电的开关操作,同时也可通过Android手机APP或Windows电脑上位机进行远程控制。系统还具备温湿度、光照强度、烟雾浓度和火焰检测功能,当检测到异常情况时,自动触发蜂鸣器报警并向

883

C#连接\访问MySQL数据库

准备 安装MySQL Server,下载地址:

ll_cloud的专栏 699

OpenCV-Python图形图像处理:自用的一些工具函数源代码

本文为《OpenCV-Python图形图像处理:博主自用的一些工具函数功能及调用语法介绍》内容配套函数的源代码。

老猿Python 2495

YOLOv5源码逐行超详细注释与解读(3)——训练部分train.py

全网最详细的YOLOv5项目源码解读之训练部分train. py。全文近5万字!代码逐行注释,逐段讲解,小白入门必备!

路人贾的博客 3万+

sqlconnection mysql_C#连接、访问MySQL数据库

一、准备工具visual stuido(本示例使用visual studio 2010)MySql.Data.dllmysql_installer_community_V5.6.21.1_setup.1415604646.msi(网上搜索去下载或者向我索要,联系方式在http://xunwn.com/1010100)二、新建DBUtility通用访问MySQL类库1、在解决方案中新建一个DBUti...

weixin_39631649的博客 675

PyTorch实战(25)——使用PyTorch构建DQN模型

深度Q网络 (Deep Q-learning Network, DQN) 在强化学习领域取得了巨大的成功和广泛的应用,PyTorch 结合 gymnasium 库为我们提供了强大的工具,支持在各种强化学习环境中测试不同类型的深度强化学习模型。在本节中,我们使用 PyTorch 框架构建使用卷积神经网络架构的 DQN 模型,模型通过自主学习掌握 Atari 经典游戏《Pong》的操作策略,最终实现击败电脑对手的竞技目标。

盼小辉丶的博客 3486

winform访问mysql长连接_C# ado.net数据库连接池,使用长连接访问数据库

1、当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用完毕应该马上调用SqlDataReader.Close()关闭它。2、一个连接只能被一个SqlDataReader使用,这也是为什么要尽早关闭SqlDataReader的原因。3、使用完SqlDataReader后,你可以在程序中显示的调用数据库连接对象的Close方法关闭连...

weixin_42140846的博客 650

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

c# 与mysql连接_实现C#与数据库的连接(在C#中访问数据库)

žDataAdapter对象同样有多种,为了访问Access,必须使用OleDbDataAdapterž在类定义头部加入OleDbDataAdapter Login_da;该语句定义了一个DataAdapter类型的变量在“提交”按钮的单击事件中加入Login_da = new OleDbDataAdapter("select * from login where username='"+this...

weixin_42115003的博客 835

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

c#mysql查询重复数据结构_C#数据库访问(一)

ADO.NET数据库访问ado.net -> 微软研发访问数据源步骤:1.创建连接2.发出数据请求3.执行命令4.处理5.关闭连接发展阶段:1.ODBC(Open Database Connectivity)2.OLE DB(Object Linkig and Embedding Database)3.ADO(ActiveX Data Objects)4.ADO.NETado.net可采用无...

weixin_28858229的博客 654

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ashx连接mysql_C# web访问mysql数据库-整理归纳总结

基本对比使用方式使用场合优缺点是否需要安装需要的dll网址引用方式程序内引用程序初期确定使用MySql,前期添加引用大多数情况下使用在类文件内,多数使用于aspx,ashx等带有后置代码的类文件中可以安装,也可以直接引用dll 多数情况下直接引用即可web.config引用后期维护接口发现程序内需要使用,这时不方便更改原有程序引用多数时候使用于没有后置代码的aspx、ashx等文件上ODBC方式配...

weixin_42512012的博客 317

vs2013 怎样访问mysql_vs2013中c#如何连接MySQL数据库。

满意答案yy7483312015.04.08采纳率:55%等级:13已帮助:5663人public static string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("~") + "数据库文件路径";pub...

weixin_39608394的博客 195

winfrom连接mysql帮助类_C#访问MySQL数据库帮助类

1 usingSystem;2 usingSystem.Collections;3 usingSystem.Collections.Specialized;4 usingSystem.Data;5 usingMySql.Data.MySqlClient;6 usingSystem.Configuration;7 usingSystem.Data.Common;8 usingSystem.Colle...

weixin_42301769的博客 262

MySQL workbench 设置可被远程访问数据库 C#

1.添加可被访问账号,%表示不限制访问账号,并设置密码 2.设置访问账号可操作内容 表示只可查询 3.C#代码实现: /// <summary> /// 连接或断开数据库的全局变量 /// </summary> MySqlConnection connection = null; MySqlConnectionStringBuilder conn_string = null; .

lee_u的博客 1705
上一篇: mvc @RenderBody()更新的问题
下一篇: C#连接MySQL异常:The host localhost does not support SSL connections.
StarsRu丶星星茹
博客等级 码龄11年 18粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值