随心笔记

1、C#项目结构

  • 程序的第一行 using System; - using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句。

  • 下一行是 namespace 声明。一个 namespace 里包含了一系列的类。HelloWorldApplication 命名空间包含了类 HelloWorld

  • 下一行是 class 声明。类 HelloWorld 包含了程序使用的数据和方法声明。类一般包含多个方法。方法定义了类的行为。在这里,HelloWorld类只有一个 Main 方法。

  • 下一行定义了 Main 方法,是所有 C# 程序的 入口点Main 方法说明当执行时 类将做什么动作。

  • 下一行 /.../ 将会被编译器忽略,且它会在程序中添加额外的 注释

  • Main 方法通过语句

     

    Console.WriteLine("Hello World");

    指定了它的行为。

    WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法。该语句会在屏幕上显示消息 "Hello, World!"。

  • 最后一行 Console.ReadKey(); 是针对 VS.NET 用户的。这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。

     

    2.笔记篇:

    举例 下面是阶乘的递归算法,其中判断条件如果 num>0 则返回 num *Jc(num - 1),否则返回 1

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    ​
    namespace jiecheng
    {
        class jiecheng
        {
            public int Jc(int num)
            {
                
                return num > 0 ? num *Jc(num - 1):1;  //如果num>0则返回num *Jc(num - 1),否则返回1
            }
        }
    //定义方法,如果输入数值不为0,则输出该数值的阶乘结果。
    ​
        class excutejiecheng
      
        {
            static void Main(string[] args)
            {
                jiecheng n = new jiecheng();
                int result = n.Jc(Convert.ToInt16(Console.ReadLine()));
                Console.WriteLine("result is {0}",result);
                Console.ReadKey();
            }
        }
    }
    ​
    ​
    ​

3、笔记之总结

  
  连接数据库:https://v.youku.com/v_show/id_XNzU4ODI2MDcy.html(视屏)
  
  1、通过ADO.NET的Connection组建来建立和数据库的连接。
  
  2、Command组建来进行管理数据查询命令。
  
  3、DataAdapter组建调用数据库查询命令进行数据的查询,将查询数据填充到数据缓存DataSet中,再将DataSet绑定到某一信息查询窗体中的DataGridView控件实例来进行显示。
  
   
  
  Oracle数据库客户端下载地址http://pan.baidu.com/s/1dDAG4Jf
  
   
  
  注意Oracle数据库的查询语句表需要加  “ ”
  
  **Ex:  select * from  “admin”;**
  
  连接数据库步骤:
  
  1、     引用命名空间
  
  引用system.Data.OracleClient
  
  2、     创建Oracle数据库的连接对象
  
  OracleConnection oc = new OracleConnection(“server=ocrl;uid=system;pwd=123456;”);
  
  3、     打开连接 oc.open();
  
  Console.WriteLine(“Open”);
  
  测试连接。(查询语句查询)
  
  ***Oracle数据库带参数查询规则
  
  “Select * from user where Id=:id”; //注意Oracle带参数用冒号。
  
   
  
  **使用C#开发窗体控件的数据 的增删改查链接地址
  
  https://jingyan.baidu.com/album/5bbb5a1b0b856213eaa17946.html?picindex=2(主要实现控件是GridView控件来实现)。
  
   
  
  **登录中判断获取的用户名和数据库中的用户名是否相同;
  
  if(name==textBox1.Text.Trim()&&pass==textBox2.Text.Trim())
  
  textBox1.Text.Trim()是指你输入框中输入的去掉空格后的文本。
  
   
  
  注意在Oracle数据库中建表中的字段关键字的使用int类型的用number来代替,通常报缺失有括号错误。
  
   
  
  select DISTINCT to_char(t.finished_time - 8 / 24, 'yyyy-MM-dd') 
  
   from lj_mes_maobang_checked t where t.created_by between to_date(p_timefrom,'yyyy-mm-dd hh24:mi:ss') 
  
   and to_date(p_timeend,'yyyy-mm-dd hh24:mi:ss');时间区间范围设置参数为字符串。
  
   
  
   **listagg() within GROUP () over**  **将多行记录在一行显示**
  
  使用foreach 进行数据的遍历,避免死循环
  
  •     *int  [] pins = {9,2,3,4,5};*
  
  •     *foreach(int pin  in   pins ){*
  
  •          *Console.WriteLine(pin);*
  
  •      *}*
  
  plsql编程规范:
  
  定义变量时    建议用v_作为前缀   v_sal
  
  定义常量   c_作为前缀
  
  定义游标    _cursor作为后缀 
​
## 4、Oracle数据库中各函数的意义以及用法

C#中方法的定义

2.访问修饰符 返回值 方法名 参数列表 方法主体

eg:public int getMax(int num1 , int num2)

{

方法体;

return 返回值;

}

 

连接数据库:https://v.youku.com/v_show/id_XNzU4ODI2MDcy.html(视屏)

1、通过ADO.NET的Connection组建来建立和数据库的连接。

2、Command组建来进行管理数据查询命令。

3、DataAdapter组建调用数据库查询命令进行数据的查询,将查询数据填充到数据缓存DataSet中,再将DataSet绑定到某一信息查询窗体中的DataGridView控件实例来进行显示。

 

Oracle数据库客户端下载地址http://pan.baidu.com/s/1dDAG4Jf

 

注意Oracle数据库的查询语句表需要加 “ ”

Ex: select * from “admin”;

连接数据库步骤:

1、 引用命名空间

引用system.Data.OracleClient

2、 创建Oracle数据库的连接对象

OracleConnection oc = new OracleConnection(“server=ocrl;uid=system;pwd=123456;”);

3、 打开连接 oc.open();

Console.WriteLine(“Open”);

测试连接。(查询语句查询)

***Oracle数据库带参数查询规则

“Select * from user where Id=:id”; //注意Oracle带参数用冒号。

 

**使用C#开发窗体控件的数据 的增删改查链接地址

https://jingyan.baidu.com/album/5bbb5a1b0b856213eaa17946.html?picindex=2(主要实现控件是GridView控件来实现)。

 

**登录中判断获取的用户名和数据库中的用户名是否相同;

if(name==textBox1.Text.Trim()&&pass==textBox2.Text.Trim())

textBox1.Text.Trim()是指你输入框中输入的去掉空格后的文本。

 

注意在Oracle数据库中建表中的字段关键字的使用int类型的用number来代替,通常报缺失有括号错误。

 

 

select DISTINCT to_char(t.finished_time - 8 / 24, 'yyyy-MM-dd')

from lj_mes_maobang_checked t where t.created_by between to_date(p_timefrom,'yyyy-mm-dd hh24:mi:ss')

and to_date(p_timeend,'yyyy-mm-dd hh24:mi:ss');时间区间范围设置参数为字符串。

 

listagg() within GROUP () over 将多行记录在一行显示

***获取文本框中的内容:

pwd.Text.Trim();

 

3.Oracle数据库的sql和plsql基础语法

(1)在Oracle数据库中想要复制已存在的表的结构和数据所需要的语法是:

create table 新表的名称 as select * from 需要复制的表

(2)Oracle数据库中插入数据语法

insert into 目标表 select * from 数据表 (条件 如果限定条件则插入限定列 如果未限定则插入所有数据 前提条件两张表的结构完全一样)

(3)Oracle数据库中复制已有表结构但不复制数据

create table 新表的名称 as select * from 需要复制的表 where 1=2

--复制表结构和数据 create table lj_mes_maobang_checkedtest as select * from lj_mes_maobang_checkedlp --查询所有数据 select t.* from lj_mes_maobang_checkedlp t --插入数据 insert into lj_mes_maobang_checkedlp (select t.* from lj_mes_maobang_checked t ) --更新表中的某列数据 update lj_mes_maobang_checkedlp t set t.work_order = '111111k' where t.checked_id = '640385' --查询修改后的数据(执行去重操作) select distinct t.* from lj_mes_maobang_checkedlp t where t.work_order = '111111k'

--删除表中的数据 特定列的值 删除完成查询是否删除 delete from lj_mes_maobang_checkedlp t where t.work_order = '111111k' select count() from lj_mes_maobang_checkedlp t where t.work_order = '111111k' --commit 之后则无法回滚 delete 之后是可以恢复的,如果一旦提交则无法恢复。 commit; rollback;

1.基本结构

create replace procedure 存储过程的名字

参数1 in number,

参数2 in number

)is

变量 1 integer :=0;

变量2 达特;

begin

执行体

end 存储过程名字;

2.使用if 判断

if v_test = 1 then

begin

do something

end;

end if;

3.Windows文件流的读取

//1\定义一个 directoryInfo对象,

Directoryinfo file = new Directoryinfo(@"文件路径");

//2\获取文件的名称和文件的大小

Fileinfo [] f = file.getFiles();

//3\遍历循环

foreach(FileInfo file in f)

{

Console.WriteLine("FileName: {0},Size{1}",file.Name,File.length)

}

4 C#实现将EXCEL数据导入数据库

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Data.SqlClient;
namespace InExcelOutExcel
{
public partial class ExcelToDB : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
FileSvr fileSvr = new FileSvr();
System.Data.DataTable dt = fileSvr.GetExcelDatatable("C:\\Users\\NewSpring\\Desktop\\Demo\\InExcelOutExcel\\InExcelOutExcel\\excel\\ExcelToDB.xlsx", "mapTable");
fileSvr.InsetData(dt);
}
}
class FileSvr
{
/// <summary>
/// Excel数据导入Datable
/// </summary>
/// <param name="fileUrl"></param>
/// <param name="table"></param>
/// <returns></returns>
public System.Data.DataTable GetExcelDatatable(string fileUrl, string table)
{
//office2007之前 仅支持.xls
//const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';";
//支持.xls和.xlsx,即包括office2010等版本的 HDR=Yes代表第一行是标题,不是数据;
const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
System.Data.DataTable dt = null;
//建立连接
OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
try
{
//打开连接
if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
{
conn.Open();
}
​
System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//获取Excel的第一个Sheet名称
string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();
//查询sheet中的数据
string strSql = "select * from [" + sheetName + "]";
OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
DataSet ds = new DataSet();
da.Fill(ds, table);
dt = ds.Tables[0];
return dt;
}
catch (Exception exc)
{
throw exc;
}
finally
{
conn.Close();
conn.Dispose();
}
}
/// <summary>
/// 从System.Data.DataTable导入数据到数据库
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public int InsetData(System.Data.DataTable dt)
{
int i = 0;
string lng = "";
string lat = "";
string offsetLNG = "";
string offsetLAT = "";
foreach (DataRow dr in dt.Rows)
{
lng = dr["LNG"].ToString().Trim();
lat = dr["LAT"].ToString().Trim();
offsetLNG = dr["OFFSET_LNG"].ToString().Trim();
offsetLAT = dr["OFFSET_LAT"].ToString().Trim();
//sw = string.IsNullOrEmpty(sw) ? "null" : sw;
//kr = string.IsNullOrEmpty(kr) ? "null" : kr;
string strSql = string.Format("Insert into DBToExcel (LNG,LAT,OFFSET_LNG,OFFSET_LAT) Values ('{0}','{1}',{2},{3})", lng, lat, offsetLNG, offsetLAT);
string strConnection = ConfigurationManager.ConnectionStrings["ConnectionStr"].ToString();
SqlConnection sqlConnection = new SqlConnection(strConnection);
try
{
// SqlConnection sqlConnection = new SqlConnection(strConnection);
sqlConnection.Open();
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandText = strSql;
sqlCmd.Connection = sqlConnection;
SqlDataReader sqlDataReader = sqlCmd.ExecuteReader();
i++;
sqlDataReader.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlConnection.Close();
}
//if (opdb.ExcSQL(strSql))
// i++;
}
return i;
}
}
}
// Microsoft Access 2010 数据库引擎可再发行程序包
//https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255
​
​
using` `System; 
using` `System.Data; 
using` `System.Data.OleDb; 
using` `System.Data.SqlClient; 
using` `System.IO; 
using` `System.Text; 
using` `System.Web; 
using` `System.Web.UI; 
private` `DataTable  xsldata() 
        ``{ 
           ``if``(fuload.FileName == ``""``) 
            ``{ 
                ``lbmsg.Text = ``"请选择文件"``; 
                ``return` `null``; 
            ``} 
            ``string` `fileExtenSion; 
            ``fileExtenSion = Path.GetExtension(fuload.FileName); 
            ``if``(fileExtenSion.ToLower() != ``".xls"` `&& fileExtenSion.ToLower() != ``".xlsx"``) 
            ``{ 
                ``lbmsg.Text = ``"上传的文件格式不正确"``; 
                ``return` `null``; 
            ``} 
            ``try
            ``{ 
                ``string` `FileName = ``"App_Data/"` `+ Path.GetFileName(fuload.FileName); 
                ``if``(File.Exists(Server.MapPath(FileName))) 
                ``{ 
                    ``File.Delete(Server.MapPath(FileName)); 
                ``} 
                ``fuload.SaveAs(Server.MapPath(FileName)); 
                ``//HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES 
                ``string` `connstr2003 = ``"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="` `+ Server.MapPath(FileName) + ``";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"``; 
                ``string` `connstr2007 = ``"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="` `+ Server.MapPath(FileName) + ``";Extended Properties=\"Excel 12.0;HDR=YES\""``; 
                ``OleDbConnection conn; 
                ``if``(fileExtenSion.ToLower() == ``".xls"``) 
                ``{ 
                    ``conn = ``new` `OleDbConnection(connstr2003); 
                ``} 
                ``else
                ``{ 
                    ``conn = ``new` `OleDbConnection(connstr2007); 
                ``} 
                ``conn.Open(); 
                ``string` `sql = ``"select * from [Sheet1$]"``; 
                ``OleDbCommand cmd = ``new` `OleDbCommand(sql, conn); 
                ``DataTable dt = ``new` `DataTable(); 
                ``OleDbDataReader sdr = cmd.ExecuteReader(); 
 
                ``dt.Load(sdr); 
                ``sdr.Close(); 
                ``conn.Close(); 
                ``//删除服务器里上传的文件 
                ``if``(File.Exists(Server.MapPath(FileName))) 
                ``{ 
                    ``File.Delete(Server.MapPath(FileName)); 
                ``} 
                ``return` `dt; 
            ``} 
            ``catch``(Exception e) 
            ``{ 
                ``return` `null``; 
            ``} 
        ``} 
 
        ``protected` `void` `Btn_Export_Excel_To_DB_Click(``object` `sender, EventArgs e) 
        ``{ 
            ``try``{ 
 
                ``DataTable dt = xsldata(); 
 
                ``//dataGridView2.DataSource = ds.Tables[0]; 
                ``int` `errorcount = 0;``//记录错误信息条数 
                ``int` `insertcount = 0;``//记录插入成功条数 
 
                ``int` `updatecount = 0;``//记录更新信息条数 
 
                ``string` `strcon = ``"server=localhost;database=database1;uid=sa;pwd=sa"``; 
                ``SqlConnection conn = ``new` `SqlConnection(strcon);``//链接数据库 
                ``conn.Open(); 
 
                ``for``(``int` `i = 0; i < dt.Rows.Count; i++) 
                ``{ 
                    ``string` `Name = dt.Rows[i][0].ToString();``//dt.Rows[i]["Name"].ToString(); "Name"即为Excel中Name列的表头 
                    ``string` `Sex = dt.Rows[i][1].ToString(); 
                    ``int` `Age = Convert.ToInt32(dt.Rows[i][2].ToString()); 
                    ``string` `Address = dt.Rows[i][3].ToString(); 
                    ``if``(Name != ``""` `&& Sex != ``""` `&& Age != 0 && Address != ``""``) 
                    ``{ 
                        ``SqlCommand selectcmd = ``new` `SqlCommand(``"select count(*) from users where Name='"` `+ Name + ``"' and Sex='"` `+ Sex + ``"' and Age='"` `+ Age + ``"' and Address="` `+ Address, conn); 
                        ``int` `count = Convert.ToInt32(selectcmd.ExecuteScalar()); 
                        ``if``(count > 0) 
                        ``{ 
                            ``updatecount++; 
                        ``} 
                        ``else
                        ``{ 
                            ``SqlCommand insertcmd = ``new` `SqlCommand(``"insert into users(Name,Sex,Age,Address) values('"` `+ Name + ``"','"` `+ Sex + ``"',"` `+ Age + ``",'"` `+ Address + ``"')"``, conn); 
                            ``insertcmd.ExecuteNonQuery(); 
                            ``insertcount++; 
                        ``} 
                    ``} 
                    ``else
                    ``{ 
                        ``errorcount++; 
                    ``} 
                ``} 
                ``Response.Write((insertcount + ``"条数据导入成功!"` `+ updatecount + ``"条数据重复!"` `+ errorcount + ``"条数据部分信息为空没有导入!"``)); 
            ``} 
            ``catch``(Exception ex) 
            ``{ 
 
            ``} 
        ``}

1.使用定时器执行任务:

//定义Timer类 System.Timers.Timer timer; /// <summary> /// 初始化Timer控件 /// </summary> private void InitTimer() { //设置定时间隔(毫秒为单位) int interval = 3000; timer = new System.Timers.Timer(interval); //设置执行一次(false)还是一直执行(true) timer.AutoReset = true; //设置是否执行System.Timers.Timer.Elapsed事件 timer.Enabled = true; //绑定Elapsed事件 timer.Elapsed += new System.Timers.ElapsedEventHandler(TimerUp); //开始 timer.Start(); }

/// <summary> /// Timer类执行定时到点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TimerUp(object sender, System.Timers.ElapsedEventArgs e) { try { readDataFromAcess(); WriteToDb();

        }
        catch (Exception ex)
        {
            MessageBox.Show("执行定时到点事件失败:" + ex.Message);
        }
    }

private void readDataFromAcess() { //label2.Text = String.Empty; try { using (OleDbConnection conn = new OleDbConnection( "Provider = Microsoft.Ace.OLEDB.12.0;Data Source = C:\SintonInstruments\BulkLifetimeSummaryData\Summary.accdb")) { conn.Open();//要先打开连接 using (OleDbCommand cmd = conn.CreateCommand()) //创建小货车 cmd { //参数的使用 // 获取或设置 SQL 语句或存储的过程以在数据源中执行。 cmd.CommandText = "select GuestsID, Name, Time, Date, EstBulkLifetime from SummaryData where GuestsID = (select max(GuestsID) from SummaryData);"; //cmd.Parameters.Add(new SqlParameter("@rank", 2)); //因为SqlDataReader实现了IDisposable接口,释放对象资源的接口是IDisposable using (OleDbDataReader reader = cmd.ExecuteReader()) { //查询到结果放在数据库中没有放到客户端中,以后可以用DataSet处理 while (reader.Read()) { temp = double.Parse(reader[4].ToString()); //label2.Text = "OK"; //string name = (string)reader.GetString(0); //MessageBox.Show(name); } } } } } catch(Exception e) { MessageBox.Show(e.Message); } }

//向数据库中写入数据 private void writeToDb() { if(Invaild()) //晶编等信息都已维护 { string selectSql = @"{?=call longimes.LJ_MES_AGE_CHECKED_SET.update_data_for_lifetime2('"

                     + this.txb_code.Text.Trim() + "','"
                                              + this.label1.Text + "','"
                     + 
                                              + this.label1.Text + + _location + "','"
                                                                       + this.txb_mode.Text + "','"
                                                                           + this.txb_prod.Text + "','"
                                                                           + this.lab_isQua.Text + "','"
                                                                           + this.cmbWorkshop.Text.Trim() + "')}";
                                              string str = (string)DatabaseAccessService.execute(selectSql, ReturnType.STRING);
                                            Mes.Core.ApplicationObject.PkgReturnValue rv = new Mes.Core.ApplicationObject.PkgReturnValue(str);
                                            if (rv.IsExecuteFail)
                                            {
                                                            this.toolStripStatusLabel1.Text = DateTime.Now.ToString() + "  数据录入不成功";
                                                            MessageBox.Show("数据录入不成功!");
                                                            Mes.Core.Service.MessageService.ShowMessage(rv.Message);
                                                            return;
                                            }
                                            else
                                            {
                                                            this.toolStripStatusLabel1.Text = DateTime.Now.ToString() + "  数据录入成功";
                                            //    foreach (Control rab in groupBoxEx1.Controls)
                                            //    {
                                            //        if (rab is RadioButton)
                                         //        {
                                         //            if ((rab as RadioButton).Checked == true)
                                         //               (rab as RadioButton).BackColor = Color.Green;
                                         //        }
                                         //    }
                                                   }
                                      }
                                                        }

5.学生管理系统视屏

https://study.163.com/course/courseLearn.htm?courseId=1004094049#/learn/video?lessonId=1047972255&courseId=1004094049 网易云课堂

判断文本框中输入内容和文件夹中Excel表名对应代码。

using System.IO; IF(File.Exists(指定路径+"\"+文件框输入的EXCEL名称+".xlsx") || File.Exists(指定路径+"\"+文件框输入的EXCEL名称+".xls") )//支持.xlsx和.xls { //存在 } else { //不存在 }

//根据晶体编码获取产品规格代码:

private string GetInfoByCrystal(string p_crystalno) { string selectOp = @"{?=call longimes.lj_mes_oxygen_carbon_data.get_oxygencarbondata_bycrystal('" + p_crystalno + "')}"; return (string)DatabaseAccessService.execute(selectOp, ReturnType.STRING); }

//与之相对应的plsql代码

FUNCTION GET_OXYGENCARBONDATA_BYCRYSTAL(p_crystal IN VARCHAR2) RETURN VARCHAR2 IS X_RET VARCHAR2(100); BEGIN -- OPEN X_RET FOR SELECT t.Stad_Production ||','|| CASE SUBSTR(t.Crystal_Encoding, 3, 1) WHEN 'X' THEN 'P' WHEN 'P' THEN 'N' WHEN 'S' THEN 'S' ELSE '未知' END ||','|| s.WORKSHOP INTO X_RET FROM LJ_MES_MAOBANG_CHECKED t LEFT JOIN LJ_MES_SINGLESTOVE_INFO s ON SUBSTR(t.Crystal_Encoding, 6, 3) = REPLACE(s.Stove_Number, 'DJL0', '') WHERE t.STATE = 'VALID' AND s.STATE = 'VALID' AND CRYSTAL_ENCODING = substr(p_crystal,1,11); RETURN X_RET; END;

 

 

LJMESOCDataInput --trunc(v-val_o,[2])对输入的数字进行限定处理

lj_mes_lpceshi

Java web Spring MVC 流程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值