共 9 篇文章

标签:数据库操作

c语言代码怎么使用数据库-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

c语言代码怎么使用数据库

在C语言中使用数据库,通常需要借助一些库或者API来实现,这些库或者API可以帮助我们完成数据库的连接、查询、插入、更新和删除等操作,下面以MySQL数据库为例,介绍如何在C语言中使用数据库。,1、安装MySQL数据库驱动,我们需要在C语言中安装一个MySQL数据库驱动,这个驱动可以帮助我们连接到MySQL数据库,在这里,我们使用MySQL Connector/C库,你可以从这里下载:https://dev.mysql.com/downloads/connector/c/,下载完成后,将解压得到的文件夹放到你的项目中,并在项目中包含相应的头文件。,2、连接到MySQL数据库,要连接到MySQL数据库,我们需要创建一个MYSQL结构体变量,并使用mysql_init()函数初始化它,使用mysql_real_connect()函数连接到数据库,以下是一个示例:,在这个示例中,我们连接到了一个名为”test”的本地MySQL数据库,使用的用户名是”root”,密码是”password”,请根据实际情况修改这些参数。,3、执行SQL查询,连接到数据库后,我们可以使用mysql_query()函数执行SQL查询,我们可以执行一个简单的SELECT语句来获取表中的数据:,4、处理查询结果,执行完查询后,我们可以使用mysql_store_result()函数将查询结果存储到MYSQL_RES结构体中,可以使用mysql_num_rows()函数获取查询结果的行数,使用mysql_fetch_row()函数逐行获取查询结果,以下是一个示例:,5、插入、更新和删除数据,除了查询数据外,我们还可以在C语言中使用MySQL数据库插入、更新和删除数据,以下是一些示例:,插入数据:,更新数据:,删除数据:,6、关闭数据库连接,不要忘记在使用完数据库后关闭连接,可以使用mysql_close()函数关闭连接:,至此,我们已经介绍了如何在C语言中使用MySQL数据库,需要注意的是,这里只是一个简单的示例,实际应用中可能需要根据具体需求进行更多的错误处理和优化,还可以考虑使用其他数据库驱动和API,如PostgreSQL、SQLite等。,

技术分享
sql怎么增加一列数据-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

sql怎么增加一列数据

在SQL中,为现有表增加一列数据是一项常见的数据库操作,这通常通过ALTER TABLE语句来完成,以下是一个详细的技术教学,指导你如何在SQL表中增加一列。,准备工作,在开始之前,请确保你有权限修改数据库表结构,并且了解你要操作的数据库管理系统(如MySQL、PostgreSQL、SQL Server等),因为不同系统可能有细微的语法差异。,步骤解析,1、 确定列属性:在增加列之前,你需要知道新列的数据类型(如INT, VARCHAR, DATE等),以及是否需要设置默认值、是否允许NULL值等属性。,2、 使用ALTER TABLE语句:使用ALTER TABLE命令来添加新列,语法通常如下:,“`sql,ALTER TABLE table_name,ADD column_name data_type [constraints];,“`, table_name 是你想要修改的表名。, column_name 是新列的名称。, data_type 指定新列的数据类型。, [constraints] 是可选的,用于设置额外的约束条件,比如NOT NULL、DEFAULT等。,3、 执行语句:在确认无误后,执行该SQL语句来增加列。,4、 验证结果:增加列后,可以通过DESCRIBE或SHOW COLUMNS命令来查看表结构,确保新列已经被成功添加。,实际操作示例,假设我们有一个名为 students的表,包含学生的ID和姓名,现在我们想增加一个存储学生年龄的列,可以按照以下步骤操作。,MySQL示例,在MySQL中,你可以这样写:,上述语句将在 students表中增加一个名为 age的新列,数据类型为整型(INT),不允许NULL值,并默认值为0。,PostgreSQL示例,在PostgreSQL中,语法稍有不同,但基本思路一致:,SQL Server示例,在SQL Server中,你可以这样做:,注意事项,1、增加列的时候,如果列需要放在特定位置,一些数据库系统支持在ALTER TABLE语句中使用COMMA分隔已有列名来指定新列的位置。,2、如果表中已经有大量数据,增加列可能需要一些时间,因为它可能需要重建整个表,在此期间,表可能会被锁定。,3、在生产环境中操作前,最好先在测试环境进行尝试,确保不会对现有数据造成影响。,4、如果你正在使用ORM(对象关系映射)工具或其他抽象层,可能不需要直接编写 SQL语句,而是通过相应的API来增加列。,结语,增加列是SQL中的一项基本技能,它使得数据库能够随着应用需求的变化而灵活调整,掌握这一技能对于数据库管理员和开发者来说至关重要,不过,在进行任何结构变更之前,请务必备份你的数据,以防不测。,

技术分享
sql怎么查询指定时间以后的数据-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

sql怎么查询指定时间以后的数据

在SQL中查询指定时间以后的数据是数据库操作中常见的需求,不同的数据库系统(如MySQL、PostgreSQL、SQL Server等)可能在语法上有所差异,但基本的处理逻辑是相似的,以下是如何在不同数据库系统中进行此类查询的详细步骤和示例代码。,MySQL,在MySQL中,你可以使用 CURDATE()或 NOW()函数来获取当前日期和时间,然后结合 WHERE子句来筛选出指定时间之后的数据。,示例:,假设我们有一个名为 orders的表,其中包含一个 date_created字段,记录了订单创建的时间,要查询所有在2023年1月1日之后创建的订单,可以使用以下SQL语句:,如果你想要查询当前时间之后的数据,可以使用 CURDATE()或 NOW():,或者,PostgreSQL,在PostgreSQL中,你可以使用 CURRENT_DATE或 NOW()函数来获取当前日期和时间。,示例:,同样以 orders表为例,查询2023年1月1日之后创建的订单,可以使用:,查询当前时间之后的数据,可以使用:,或者,SQL Server,在SQL Server中,你可以使用 GETDATE()函数来获取当前日期和时间。,示例:,使用 orders表,查询2023年1月1日之后创建的订单:,查询当前时间之后的数据:,通用建议,1、 使用索引:如果 date_created字段经常用于查询条件,考虑在该字段上创建索引以提高查询效率。,2、 避免函数操作:在 WHERE子句中直接使用日期字面量(如 '20230101')而不是日期函数,因为后者可能导致无法使用索引。,3、 时区问题:确保你的查询考虑到时区的影响,如果你的应用面向全球用户,可能需要将时间戳转换为UTC时间进行比较。,4、 性能优化:对于大型数据集,考虑使用分区表来提高查询性能,尤其是当数据按时间范围查询时。,5、 避免全表扫描:确保查询条件尽可能具体,以减少数据库需要扫描的数据量。,6、 使用EXPLAIN:大多数数据库系统提供了解释查询计划的工具(如MySQL的 EXPLAIN),使用它们来分析和优化你的查询。,通过以上步骤和示例,你应该能够理解如何在SQL中查询指定时间以后的数据,记住,具体的语法可能会根据你使用的数据库系统而有所不同,因此请参考相应的文档以确保正确的语法和最佳实践。,

技术分享
sql封装成参数调用-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

sql封装成参数调用

SqlSugar是一个轻量级的ORM框架,它提供了丰富的功能,使得开发者能够更加方便地进行数据库操作,为了更好地利用SqlSugar的功能,我们可以对其进行基类封装,以便于在项目中统一使用和扩展,下面将详细介绍如何进行SqlSugar基类封装。,我们需要创建一个基类,这个基类将包含一些通用的属性和方法,以便于我们在项目中统一使用,这个基类可以命名为BaseRepository,代码如下:,接下来,我们需要在项目中使用这个基类,我们需要创建一个SqlSugarClient实例,这个实例将用于与数据库进行交互,我们可以创建一个继承自BaseRepository的子类,并在子类中实现具体的业务逻辑,我们可以创建一个UserRepository类,代码如下:,现在,我们可以在项目中使用UserRepository类来进行 数据库操作,我们可以在一个控制器中使用UserRepository来获取用户信息、添加用户、更新用户信息和删除用户,代码如下:,通过以上步骤,我们已经完成了SqlSugar基类的封装,在实际项目中,我们可以根据需要对基类进行扩展,以满足不同的业务需求,这种封装方式也有利于提高代码的可维护性和可读性。,

技术分享
个人用什么虚拟主机(个人用什么虚拟主机好)-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

个人用什么虚拟主机(个人用什么虚拟主机好)

个人用什么虚拟主机好?,虚拟主机,也称为网站托管服务或网页空间,是指利用技术将一台服务器分割成多个“虚拟”的服务器,每个服务器都可以运行独立的网站,对于个人用户而言,选择合适的虚拟主机服务至关重要,因为它直接关系到网站的运行效率、稳定性以及成本,以下是几个选择虚拟主机时可以考虑的因素:, ,虚拟主机的性能包括存储空间、带宽、内存和CPU等资源,根据个人网站的需求来选择相应级别的虚拟主机,如果只是简单的个人博客,入门级虚拟主机就足够使用;若是资源密集型应用,如电商网站或高流量社区,则需要更高性能的专业型虚拟主机。,虚拟主机的价格差异较大,从每年几十元到几千元不等,通常来说,价格更高的服务商会提供更好的性能和客户服务,但并非最贵的就是最适合的,需要结合个人预算和第一点提到的性能需求来权衡。,一个经常宕机或响应缓慢的虚拟主机会严重影响用户体验,在选择时,应考虑服务商的稳定性和历史表现,可以通过网上评论、独立评测或询问有经验的朋友来了解不同服务商的可靠性。,良好的客户服务可以在遇到问题时得到快速有效的帮助,一些虚拟主机提供商提供24/7的客户支持,包括电话、邮件、在线聊天等多种渠道。,一个直观易用的控制面板可以简化网站管理的复杂性,cPanel是一个非常流行的控制面板,它提供了文件管理、数据库操作、电子邮件设置等功能。,确保虚拟主机提供商能够提供足够的安全措施来保护网站免受黑客攻击和恶意软件的威胁,这包括日常备份、防火墙、SSL证书等。,随着个人网站的成长,可能需要更多的资源和功能,选择一个提供无缝升级选项的服务商,可以在不更换服务商的情况下轻松升级。, ,数据中心的地理位置会影响到网站的加载速度,一般而言,选择靠近主要用户群的数据中心可以提高访问速度。,某些虚拟主机服务商可能会提供额外的服务,如免费的域名注册、SSL证书、网站迁移服务等,这些附加服务可以为个人用户带来更多价值。,选择虚拟主机时需要综合考虑性能需求、价格与性价比、可靠性和稳定性、客户服务和支持、控制面板和管理工具、安全性、扩展性和升级选项、数据中心位置以及附加功能和服务等因素,通过仔细比较和评估,个人用户可以挑选出最适合自己的虚拟主机服务。,相关问题与解答:,Q1: 如何判断虚拟主机的性能是否满足个人网站的需求?,A1: 可以通过服务商提供的详细规格说明来判断,同时参考其他用户的使用反馈和评价。,Q2: 虚拟主机的价格差异很大,如何避免过度消费?, ,A2: 确定个人网站的实际需求,并在此基础上选择符合预算且满足需求的服务计划。,Q3: 如果遇到虚拟主机的技术问题,该如何寻求帮助?,A3: 联系虚拟主机提供商的客户支持团队,他们通常会提供电话、邮件或在线聊天等多种沟通方式。,Q4: 当个人网站流量增加后,是否需要更换虚拟主机服务商?,A4: 不一定需要更换服务商,许多服务商提供无缝升级服务,允许用户在原有服务基础上增加资源。,

虚拟主机
租用美国虚拟主机,助力你的网站飞速发展!-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

租用美国虚拟主机,助力你的网站飞速发展!

租用 美国虚拟主机,助力你的网站飞速发展!,在数字化时代,一个高效、稳定且响应速度快的网站对于企业或个人来说至关重要,美国虚拟主机因其技术先进、资源丰富以及优质的服务而备受青睐,本文将详细介绍租用美国虚拟主机的优势、考虑因素及如何选择合适的服务商,以帮助你的网站实现飞速发展。, ,1、高速稳定性能,美国的数据中心通常配备有顶级硬件设施和宽带资源,保证了服务器的高速运行和99.9%以上的在线时间保证,这对于确保网站随时可访问,提供良好的用户体验至关重要。,2、技术支持与服务,多数美国虚拟主机提供商会提供24/7的客户服务和技术支持,帮助解决可能出现的技术问题,保障网站的持续运营。,3、灵活的资源分配,用户可以根据自己的需求,自由选择所需的存储空间、带宽、CPU等资源配置,并随着网站的发展进行灵活升级。,1、服务器的地理位置,虽然美国虚拟主机性能优越,但服务器的地理位置对网站的访问速度也有影响,选择靠近你目标受众的数据中心可以减少延迟,提高加载速度。,2、控制面板的易用性,一个直观、功能丰富的控制面板可以让网站管理变得更加简单高效,cPanel是目前非常流行的控制面板,提供了包括文件管理、数据库操作、邮件设置在内的多种功能。, ,3、安全性,确保数据安全是选择虚拟主机时不可忽视的因素,了解提供商是否提供定期备份、防火墙保护、恶意软件扫描等安全措施。,1、评估服务商的口碑与评价,通过互联网搜索相关评价,了解其他用户的使用体验和反馈,可以帮助你判断服务商的可靠性。,2、比较价格与套餐,对比不同服务商提供的价格和套餐内容,找到性价比最优的选择,注意隐藏费用和续费价格可能的变化。,3、确认升级与迁移政策,了解服务商提供的升级选项和数据迁移政策,确保未来网站扩张时能够无缝过渡。,问:美国虚拟主机适合哪些类型的网站?,答:美国虚拟主机适合各种规模和类型的网站,无论是小型企业官网、个人博客还是电子商务平台,都能从中受益。, ,问:如果遇到技术问题,我该如何获得帮助?,答:大多数美国虚拟主机提供商都提供24/7客户支持,你可以通过电话、电子邮件或实时聊天等方式联系他们获取帮助。,问:我应该如何评估虚拟主机的性能?,答:可以通过查看提供商的案例研究、性能测试报告,或是利用第三方评测机构的数据来评估虚拟主机的性能。,问:如果我的网站流量增长很快,是否可以无缝升级资源?,答:选择那些提供无缝资源升级选项的服务商可以确保你的网站在流量增长时保持性能不受影响。,租用美国虚拟主机可以为网站提供强有力的技术支持和资源保障,有助于网站的稳定发展和快速响应用户需求,在选择服务商时,务必考虑到自身的实际需求和长期发展规划,以确保选择最适合的虚拟主机方案,希望以上信息能够帮助你在租用美国虚拟主机的道路上做出明智的决策。,

虚拟主机
mysql 增删查改-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

mysql 增删查改

MySQL是一种常用的关系型数据库管理系统,用于存储和管理数据,下面是关于MySQL的增删查改操作的详细解释和使用示例:,1、增加数据(INSERT),要向MySQL数据库中插入新的数据行,可以使用INSERT语句,下面是一个示例:,“`sql,INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);,“`, table_name是要插入数据的表名, column1、 column2和 column3是要插入数据的列名, value1、 value2和 value3是要插入的具体值。,2、删除数据(DELETE),要从MySQL数据库中删除数据行,可以使用DELETE语句,下面是一个示例:,“`sql,DELETE FROM table_name WHERE condition;,“`, table_name是要删除数据的表名, condition是删除数据的条件。,3、查询数据(SELECT),要从MySQL数据库中查询数据,可以使用SELECT语句,下面是一个示例:,“`sql,SELECT column1, column2, … FROM table_name WHERE condition;,“`, table_name是要查询数据的表名, column1、 column2等是要查询的列名, condition是查询数据的条件,如果要返回所有列的数据,可以省略列名列表。,4、更新数据(UPDATE),要更新MySQL数据库中的数据行,可以使用UPDATE语句,下面是一个示例:,“`sql,UPDATE table_name SET column1 = value1, column2 = value2, … WHERE condition;,“`, table_name是要更新数据的表名, column1 = value1, column2 = value2, ...是要更新的列名和对应的新值, condition是更新数据的条件。,这些是MySQL数据库中常见的 增删查改操作的基本语法和用法,根据具体的需求,你可以根据上述示例进行适当的修改和扩展。,,

网站运维
如何使用asynctask实现异步任务处理?-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

如何使用asynctask实现异步任务处理?

作为网络行业的从业者,你是否经常遇到需要处理异步任务的情况?如果是,那么你一定会对Asynctask这个词并不陌生。它是一种用于处理异步任务的工具,可以帮助我们更加高效地完成任务。那么,如何使用Asynctask来实现异步任务处理呢?下面让我们一起来探究一下Asynctask的基本原理以及使用它实现异步任务的步骤吧!同时,也不要忘记了Asynctask所具有的优缺点哦!接下来,让我们一起来揭开这个神秘面纱吧! 什么是Asynctask? 1. Asynctask是什么? Asynctask是Android平台提供的一种用于处理异步任务的类,它可以让我们更方便地在后台执行耗时操作,并在主线程更新UI。它是Android系统中常用的多线程处理机制之一,也是开发Android应用必备的工具之一。 2. Asynctask的作用 在Android开发中,由于主线程(UI线程)负责处理用户界面相关的操作,如果在主线程中执行耗时操作,会导致界面卡顿甚至ANR(Application Not Responding)错误。为了避免这种情况,我们需要将耗时操作放到后台进行,而Asynctask就提供了这样的功能。它能够让我们轻松地创建一个后台任务,并在执行完毕后将结果返回给主线程进行更新。 3. Asynctask的使用方法 使用Asynctask非常简单,只需要继承该类并重写其中的几个方法即可。下面以一个简单的例子来说明如何使用Asynctask实现异步任务处理: 首先,在你想要执行异步任务的地方创建一个Asynctask对象,并调用execute()方法启动任务: MyTask task = new MyTask(); e(); 其次,在MyTask类中重写doInBackground()方法,在该方法中编写耗时操作: @Override protected String doInBackground(String… strings) { // 执行耗时操作,比如网络请求、数据库查询等 return result; // 将结果返回给onPostExecute()方法 } @Override protected void onPostExecute(String result) { // 在主线程中更新UI,比如显示结果、关闭加载框等 } 4. Asynctask的优缺点 优点: – 简单易用:Asynctask提供了简洁的API,使得我们能够轻松地在后台执行耗时操作并在主线程更新UI。 – 适用范围广:Asynctask适用于大部分的异步任务处理场景,比如网络请求、数据库操作等。 – 高效性:Asynctask利用了线程池来管理多个后台任务,可以有效地提高性能。 缺点: – 不适合长时间运行的任务:由于Asynctask默认使用单独的线程来执行任务,如果任务运行时间过长,可能会导致内存泄漏或者其他问题。 – 不支持取消:虽然Asynctask提供了cancel()方法来取消任务,但是并不能真正地停止正在运行的线程。 – 受限于API级别:Asynctask是Android系统提供的类,受限于系统版本,不同版本对其支持程度也有所不同 Asynctask的基本原理 有没有想过,为什么我们需要使用asynctask来处理异步任务呢?其实,这涉及到asynctask的基本原理。在这里,我将为你详细解释asynctask是如何工作的,让你对它有更深入的了解。 1. asynctask是什么? 首先,让我们来了解一下asynctask是什么。它是Android提供的一个轻量级的异步任务处理类,用于在后台执行耗时操作,并将结果返回给主线程。这样就可以避免在主线程中进行耗时操作而导致界面卡顿。 2. asynctask的工作流程 当我们调用asynctask的execute()方法时,它会依次执行以下几个步骤: (1)onPreExecute():在主线程中执行,用于做一些准备工作。 (2)doInBackground():在后台线程中执行耗时操作。 (3)onPostExecute():在主线程中执行,接收doInBackground()方法返回的结果,并进行相应处理。 (4)onCancelled():在主线程中执行,在任务被取消时调用。 3. 为什么要使用asynctask? 现在你可能会问,为什么我们需要使用asynctask来处理异步任务呢?这是因为Android规定所有与UI相关的操作必须在主线程中进行。如果我们在主线程中进行耗时操作,就会导致界面卡顿,用户体验变差。而asynctask可以让我们在后台线程中执行耗时操作,保证主线程的流畅运行。 4. asynctask的优缺点 使用asynctask确实能够方便地处理异步任务,但它也有一些缺点。首先,它只适用于轻量级的异步任务处理,如果任务过于复杂,可能会导致内存泄漏。其次,在某些情况下(如屏幕旋转),asynctask可能会被销毁并重新创建,这会导致数据丢失。因此,在使用asynctask时,我们需要注意这些问题。 5. 如何正确使用asynctask? 为了避免上述问题,我们需要正确地使用asynctask。首先,不要在doInBackground()方法中进行与UI相关的操作;其次,在onPostExecute()方法中更新UI;最后,在onCancelled()方法中做一些清理工作。另外,如果需要执行多个异步任务,可以考虑使用多个asynctask或者其他方式来处理 使用Asynctask实现异步任务的步骤 Asynctask是Android中一个非常重要的类,它可以帮助我们实现异步任务的处理,从而避免在主线程中进行耗时操作导致界面卡顿的问题。在网络行业中,它也被广泛应用于网络请求、数据库操作等需要耗时的任务处理。本小节将介绍如何使用Asynctask来实现异步任务的步骤。 1. 创建Asynctask类 首先,我们需要创建一个继承自Asynctask类的子类,并指定三个泛型参数:Params、Progress和Result。Params代表传入给后台任务的参数类型,Progress代表后台任务执行过程中发布进度信息的类型,Result代表后台任务执行完毕后返回的结果类型。具体代码如下: public class MyAsyncTask extends AsyncTask { // 在这里实现异步任务 } 2. 实现异步任务 接下来,在MyAsyncTask类中重写doInBackground()方法,在该方法中实现我们需要进行的耗时操作。注意,该方法运行在子线程中,不可进行UI操作。例如,在这里可以进行网络请求、数据库操作等耗时任务,并将结果返回给onPostExecute()方法。 @Override protected Result doInBackground(Params… params) { // 执行耗时操作并返回结果 return result; } 3. 更新UI 当doInBackground()方法执行完毕后,会自动调用onPostExecute()方法,在该方法中可以对UI进行更新操作。例如,我们可以在这里将网络请求的结果显示在界面上。 @Override protected void onPostExecute(Result result) { // 更新UI操作 t(result);...

CDN资讯
html中如何操作数据库-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

html中如何操作数据库

在HTML中操作数据库通常需要借助后端语言,如PHP、Python、Node.js等,这里以PHP为例,介绍如何在 HTML中操作数据库。,1、连接数据库,需要在PHP文件中创建一个连接数据库的对象,这里以MySQL数据库为例:,2、查询数据,在PHP文件中编写SQL查询语句,并将结果存储在数组中:,3、插入数据,在PHP文件中编写SQL插入语句,将数据插入到数据库中:,4、更新数据,在PHP文件中编写SQL更新语句,更新数据库中的数据:,5、删除数据,在PHP文件中编写SQL删除语句,从数据库中删除数据:,6、在HTML中调用PHP文件,在HTML文件中,使用 include或 require语句引入PHP文件,以便在HTML中操作数据库:,这样,就可以在HTML中通过PHP文件操作数据库了。, ,<?php $servername = “localhost”; $username = “username”; $password = “password”; $dbname = “myDB”; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn>connect_error) { die(“连接失败: ” . $conn>connect_error); } ?>,<?php $sql = “SELECT id, name, age FROM users”; $result = $conn>query($sql); if ($result>num_rows > 0) { // 输出数据 while($row = $result>fetch_assoc()) { echo “id: ” . $row[“id”]. ” Name: ” . $row[“name”]. ” Age: ” . $row[“age”]. “<br>”; } } else { echo “0 结果”; } $conn>close(); ?>,<?php $sql = “INSERT INTO users (name, age) VALUES (‘John’, 30)”; if ($conn>query($sql) === TRUE) { echo “新记录插入成功”; } else { echo “Error: ” . $sql . “<br>” . $conn>error; } $conn>close(); ?>,<?php $sql = “UPDATE...

互联网+