通过 Visual Studio 对 SQL Server 中的存储过程设置断点并进入存储过程对其进行调试

执行会在断点处暂停,此时,我们可以查看并更改存储过程的参数值,逐步地调试其各条语句,就像我们在步骤1 中所做的那样。

在我们可以对应用程序调用的存储过程进行调试之前,首先要指示ASP.NET web 应用程序与SQL Server 调试器相集成。首先,在 Solution Explorer 中右键单击网站名称(ASPNET_Data_Tutorial_74_VB) 。从关联菜单中选择 Property Pages 选项,然后选择左侧的Start Options 条目,选中 Debuggers 区域的 SQL Server 复选框(参见图 3 )。

图3 :在应用程序的 Property Pages 上选中 SQL Server 复选框

此外,我们还需要更新应用程序使用的数据库连接字符串以禁用连接池。当某个数据库连接关闭时,相应的SqlConnection 对象将被放入到一个包含可用连接的池中。当建立一个数据库连接时,则可从这个池中检索到一个可用的连接对象,而无需创建并建立一个新的连接。连接对象的这种缓冲池功能提高了性能,该功能缺省情况下是开启的。但在调试时,我们要关闭连接池,其原因是,如果使用从该池中得到的连接,则不能正确重建调试的基础架构。

为了禁用连接池,更改Web.config 文件中的 NORTHWNDConnectionString ,使其包含 Pooling=false 设置。

 

注意: 通过 ASP.NET 应用程序完成SQL Server 调试后,请务必恢复连接池功能,方法是,删除连接字符串中的Pooling 设置(或将其设置为 Pooling=true )。

现在已完成 ASP.NET 应用程序配置,允许 Visual Studio 在 web 应用程序调用 SQL Server 数据库对象时对数据库对象进行调试。剩下的就是向存储过程添加断点并开始调试了!

步骤3:添加断点并调试

打开Products_SelectByCategoryID 存储过程,在 SELECT 语句的开头设置一个断点。方法是,单击边框处恰当位置或将光标移到SELECT 语句开始处并按下 F9 。如图 4 所示,断点显示为空白处的一个红色圆圈。

图4 :在 Products_SelectByCategoryID 存储过程中设置断点

为了通过客户端应用程序调试 SQL 数据库对象,必须将该数据库配置为支持应用程序调试。第一次设置断点时,此设置应会自动打开。但为谨慎起见,最好对此核实。在Server Explorer 中右键单击 NORTHWND.MDF 节点。关联菜单中的 Application Debugging 菜单项应处于选中状态。

图5 :确保 Application Debugging 选项已启用

设置了断点并启用了 Application Debugging 选项后,就可以调试从 ASP.NET 应用程序调用的存储过程了。启动调试器:打开Debug 菜单并选择 Start Debugging ,或者按下F5 ,或者单击工具栏中的绿色 play 图标。此时,调试器启动,网站打开。

Products_SelectByCategoryID 存储过程是在对强类型 DataSet的 TableAdapter使用现有存储过程教程中创建的。其相应的 web 页面 (~/AdvancedDAL/ExistingSprocs.aspx) 包含一个 GridView 控件,以显示该存储过程返回的结果。通过浏览器访问该页面。打开页面后,Products_SelectByCategoryID 存储过程中的断点将被触发,程序控制权返回给Visual Studio 。如步骤 1 一样,您可以逐步调试存储过程的各条语句、查看并更改参数值。

图6 :ExistingSprocs.aspx 页面最初显示饮料类产品

图7 :执行到存储过程的断点

在图7 的Watch 窗口中可以看到,@CategoryID 参数的值为 1 。这是由于 ExistingSprocs.aspx 页面最初显示饮料类产品,而该类产品的CategoryID 值为 1 。从下拉列表中选择另一个分类。这将导致一次回传,并重新执行Products_SelectByCategoryID 存储过程。断点再次被触发,但这次 @CategoryID 参数的值反映的是所选下拉列表项的 CategoryID 。

图8 :从下拉列表中选择另一个分类

图9 :@CategoryID 参数反映 Web 页面上选择的分类

注意: 如果访问 ExistingSprocs.aspx 页面时没有触发 Products_SelectByCategoryID 存储过程中的断点,请确保 ASP.NET 应用程序的Properties Page 中 Debuggers 区域的SQL Server 复选框是选中的,连接池已禁用,并且数据库的Application Debugging 选项是启用的。如果还有问题,请重启Visual Studio 后重试。

调试远程实例中的T-SQL 数据库对象

若SQL Server 数据库实例与 Visual Studio 在同一台机器上,则通过Visual Studio 调试数据库对象相当简单。但如果 SQL Server 与Visual Studio 位于不同的机器上,则需要进行仔细配置以使各方面工作正常。为此我们的两个重要任务是:

  • 确保通过 ADO.NET 连接到数据库时使用的登录帐户具有 系统管理员 (sysadmin) 的身份。
  • 确保在开发机器上 Visual Studio 使用的 Windows 用户帐户是一个有效的、具有 sysadmin 身份的 SQL Server 登录帐户。

第一步相对简单。首先,确定使用哪个用户帐户来从ASP.NET 应用程序连接到数据库,然后通过SQL Server Management Studio 将此登录帐户添加到 sysadmin 角色中。

第二个任务要求您在调试应用程序时所使用的Windows 用户帐户是远程数据库上的一个有效的登录帐户。但有时您登录到工作站的Windows 帐户并非SQL Server 上的一个有效登录帐户。比起将您的特定登录帐户添加到SQL Server 来,一个更好的办法是将某个Windows 用户帐户指定为 SQL Server 调试帐户。然后,可以使用该Windows 登录帐户的证书运行 Visual Studio ,以便调试远程SQL Server 实例的数据库对象。

下面用一个例子来说明上述情况。假设Windows 域中有一个名为 SQLDebug 的Windows 帐户。需要将此帐户添加到远程 SQL Server 实例中,使其作为一个有效登录帐户及sysadmin 角色的一个成员。然后,我们需要以 SQLDebug 用户身份运行 Visual Studio ,以便通过 Visual Studio 调试远程 SQL Server 实例。这可以通过如下步骤完成:从工作站退出,用SQLDebug 帐户重新登录,然后启动 Visual Studio 。但一个更简单的方法是用我们自己的证书登录工作站,然后使用runas.exe 作为 SQLDebug 用户启动Visual Studio 。利用runas.exe ,可以借其他用户帐户的身份执行特定的应用程序。要作为SQLDebug 用户来启动Visual Studio ,可以命令行输入以下命令:

runas.exe /user:SQLDebug "%PROGRAMFILES%/Microsoft Visual Studio 8/Common7/IDE/devenv.exe"

关于该过程的更详细的介绍,请参见 William R. Vaughn 的 Hitchhiker’s Guide to Visual Studio and SQL Server, Seventh Edition ,以及怎样为调试设置 SQL Server 权限

注意: 如果您的开发机器运行的是 Windows XP Service Pack 2 ,您将需要配置Internet Connection Firewall 以允许远程调试。文章怎样启用 SQL Server 2005 调试 中提到这一过程包含两个步骤:“(a) 在Visual Studio 宿主机器上,必须向 Exceptions 列表添加 Devenv.exe ,并打开 TCP 135 端口;(b) 在远程 (SQL ) 机器上,必须打开TCP 135 端口并向 Exceptions 列表添加 sqlservr.exe 。如果您的域策略要求通过IPSec 进行网络通信,则必须打开 UDP 4500 和 UDP 500 端口。

小结

除了支持 .NET 应用程序代码的调试,Visual Studio 还为 SQL Server 2005 提供了多种可选的调试方法。本教程中我们学习了其中两种方法:直接数据库调试和应用程序调试。要直接调试一个T-SQL 数据库对象,先通过Server Explorer 找到该对象,右键单击该对象,然后选择"Step Into…" 。此时,调试器会启动,并在该数据库对象的第一条语句处暂停。这时您可以逐步调试该对象的各条语句,查看并更改参数值。在步骤1 中我们使用了这种方法来进入 Products_SelectByCategoryID 存储过程进行调试。

应用程序调试允许直接在数据库对象中设置断点。当从客户端应用程序(如一个ASP.NET web 应用程序)调用含有断点的数据库对象时,程序会暂停,调试器会接管程序的控制权。应用程序调试方法非常有用,原因是,它可以更清楚地展示对特定数据库对象的调用是由哪个应用程序操作引起的。但是,比起直接数据库调试方法,它需要进行较多的配置和设置。

我们还可通过 SQL Server Project 来对数据库对象进行调试。我们将在下一篇教程中看到对SQL Server Project 的使用,该教程将会讲述怎样使用SQL Server Project 来创建并调试托管数据库对象。

快乐编程!

--原地址

http://msdn.microsoft.com/en-us/dd263118(zh-cn).aspx

转自:http://blog.csdn.net/xys_777/archive/2010/06/18/5678190.aspx

<connectionStrings>
    <add name="NORTHWNDConnectionString" connectionString=
        "Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/NORTHWND.MDF;
            Integrated Security=True;User Instance=True;Pooling=false"
        providerName="System.Data.SqlClient" />
</connectionStrings>






SQL 调试:无法启动 T-SQL 调试。未能附加到 SQL Server 进程

将 Windows 登录帐户添加为 sysadmin

已经具有 sysadmin 特权的用户必须执行以下命令:

sp_addsrvrolemember 'Domain\Name', 'sysadmin'

其中,Domain\Name 表示 Windows 登录帐户,若不清楚登录账户是什么,可以在SQLServer连接中尝试Window登录,即可看到相应的用户名。




      
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Visual C++ 2005入门经典》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2005入门经典 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2005 原出版社: Wiley 作者: (美)Ivor Horton 译者: 李颂华 康会光 出版社:清华大学出版社 ISBN:9787302142713 上架时间:2007-2-12 出版日期:2007 年1月 开本:16开 页码:1046 版次:1-1 编辑推荐   本书由编程语言先驱者Ivor Horton倾力而著,是国内第一本全面、深入介绍Visual C++ 2005的经典之作! 内容简介   本书系编程语言先驱者Ivor Horton的经典之作,是学习C++编程最畅销的图书品种之一,不仅涵盖了Visual C++ .NET编程知识,还全面介绍了标准C++语言和.NET C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,从读者可以学习Visual C++ 2005的基础知识,并全面掌握在MFC和Windows Forms访问数据源的技术。此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为C++高效程序员。...    作译者   Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的顾问及撰写工作,曾帮助无数程序员步入编程的殿堂。他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。Ivor Horton还著有Beginning Visual C++ 6、Beginning C Programming和Beginning Java 2等多部入门级好书。 目录 封面 -18 前言 -14 目录 -9 第1章 使用Visual C++ 2005编程 1 1.1 .NET Framework 1 1.2 CLR 2 1.3 编写C++应用程序 3 1.4 学习Windows编程 4 1.4.1 学习C++ 4 1.4.2 C++标准 5 1.4.3 控制台应用程序 5 1.4.4 Windows编程概念 6 1.5 集成开发环境简介 7 1.6 使用IDE 9 1.6.1 工具栏选项 9 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置Visual C++ 2005的选项 23 1.6.6 创建和执行Windows应用程序 24 1.6.7 创建Windows Forms应用程序 26 1.7 小结 29 第2章 数据、变量和计算 31 2.1 C++程序结构 31 2.1.1 程序注释 36 2.1.2 #include指令——头文件 37 2.1.3 命名空间和using声明 37 2.1.4 main()函数 38 2.1.5 程序语句 38 2.1.6 空白 40 2.1.7 语句块 41 2.1.8 自动生成的控制台程序 41 2.2 定义变量 42 2.2.1 命名变量 43 2.2.2 C++的关键字 43 2.2.3 声明变量 44 2.2.4 变量的初值 44 2.3 基本数据类型 45 2.3.1 整型变量 45 2.3.2 字符数据类型 46 2.3.3 整型修饰符 47 2.3.4 布尔类型 48 2.3.5 浮点类型 48 2.3.6 ISO/ANSI C++的基本类型 49 2.3.7 字面值 50 2.3.8 定义数据类型的同义词 50 2.3.9 具有特定值集的变量 51 2.3.10 指定枚举常量的类型 52 2.4 基本的输入/输出操作 53 2.4.1 从键盘输入 53 2.4.2 到命令行的输出 53 2.4.3 格式化输出 54 2.4.4 转义序列 55 2.5 C++的计算 57 2.5.1 赋值语句 57 2.5.2 算术运算 58 2.5.3 计算余数 63 2.5.4 修改变量 63 2.5.5 增量和减量运算符 64 2.5.6 计算
本书详细介绍了利用Visual C# 2005进行网络编程的方法和技巧。全书共分13章,主要内容包括网络编程原理、Visual C# 2005的套接字以及多线程的开发、基于各种不同协议的网络编程应用模块,并通过几个典型的实例介绍了Visual C# 2005网络编程的实际应用。 本书注重代码的通用性和工程实践性,书提供的通用模块和典型实例稍加修改就可以为读者所用。   本书不仅适用于使用Visual C# 2005进行软件开发的广大软件开发人员,也适合高等院校师生学习和参考使用,特别对高校计算机专业的学生进行毕业设计具有非常好的指导价值,也可以作为广大计算机编程爱好者的自学参考书。 第1章 C#.NET网络编程概述  1.1 网络通信概述   1.1.1 网络通信模型概述   1.1.2 网络通信协议、接口和服务概述   1.1.3 TCP/IP网络架构概述   1.1.4 IP地址与端口  1.2 C#.NET网络编程相关类   1.2.1 IPAddress类   1.2.2 DNS类   1.2.3 IPHostEntry类   1.2.4 IPEndPoint类   1.2.5 Socket类  1.3 套接字概述   1.3.1 套接字的类型和常用属性   1.3.2 建立面向连接的套接字   1.3.3 建立面向无连接的套接字  1.4 使用套接字的简单示例   1.4.1 C/S与B/S架构通信模式概述   1.4.2 编写客户端代码   1.4.3 编写服务器端代码 .  1.4.4 无阻塞套接字  1.5 本章小结 第2章 C#.NET高级网络编程技术概述  2.1 线程与网络通信   2.1.1 基于线程的网络通信概述   2.1.2 在网络编程使用多线程   2.1.3 线程基础   2.1.4 多线程在网络编程的应用  2.2 网络通信的常见问题   2.2.1 让网络通信代码更强壮   2.2.2 数据缓冲区处理方法  2.3 TCP无保护消息边界   2.3.1 发送固定长度的消息   2.3.2 采用变长的消息   2.3.3 使用特殊标记处理消息  2.4 本章小结 第3章 开发基于TCP协议的应用程序  3.1 套接字与TCP协议   3.1.1 使用套接字传输数据   3.1.2 NetworkStream对象同数据发送与接收   3.1.3 TcpClient与TcpListener类   3.1.4 使用TCP/IP协议编写应用层的通信代码  3.2 开发异步的TCP应用编程   3.2.1 TCP的异步通信流程   3.2.2 线程阻塞与异步的同步问题  3.3 开发异步的TCP聊天程序   3.3.1 客户端界面设计   3.3.2 客户端业务逻辑设计   3.3.3 服务器端界面设计   3.3.4 服务器端业务逻辑设计   3.3.5 运行界面  3.4 本章小结 第4章 开发基于UDP的应用程序  4.1 UDP通信协议概述   4.1.1 UDP协议与TCP协议的差别   4.1.2 UDP协议的使用场合  4.2 在C#下UDP协议的相关类   4.2.1 IPAddress类   4.2.2 UdpClient类的构造函数   4.2.3 UdpClient类的常用方法与实例  4.3 UDP协议使用示例   4.3.1 UDP模块功能概述   4.3.2 设计通信流程   4.3.3 开发服务器端程序   4.3.4 开发客户端程序   4.3.5 使用多线程开发UDP协议   4.3.6 使用校验保证信息完整性   4.3.7 效果演示  4.4 本章小结 第5章 开发基于SNMP协议的应用程序  5.1 SNMP协议概述   5.1.1 了解SNMP协议   5.1.2 SNMP的常用命令   5.1.3 设计SNMP包  5.2 SNMP协议使用示例   5.2.1 需求分析与设计   5.2.2 设计程序流程   5.2.3 程序窗口界面设计   5.2.4 SNMP类编写   5.2.5 SNMP程序窗口类编写  5.3 运行效果演示  5.4 使用供货商提供的MIB库  5.5 本章小结 第6章 使用.NET发送邮件  6.1 邮件发送与接收协议概述   6.1.1 SMTP协议与邮件发送   6.1.2 POP3协议与邮件接收   6.1.3 .NET下支持SMTP和POP3的类  6.2 邮件发送与接收模块   6.2.1 需求分析与设计   6.2.2 设计邮件发送和接收的流程   6.2.3 界面设计   6.2.4 编写主窗口的业务逻辑   6.2.5 编写发送邮件的业务逻辑   6.2.6 编写接收邮件的业务逻辑   6.2.7 使用多线程发送与接收邮件  6.3 运行效果演示  6.4 本章小结 第7章 FTP下载与文件传输  7.1 FTP协议概述   7.1.1 使用FTP协议下载文件的流程   7.1.2 相关类库说明  7.2 FTP客户端设计   7.2.1 需求分析   7.2.2 界面设计   7.2.3 业务逻辑设计  7.3 FTP服务器端设计   7.3.1 需求分析   7.3.2 FTP响应码   7.3.3 业务逻辑设计  7.4 运行界面  7.5 本章小结 第8章 基于C#.NET的网络管理模块  8.1 ICMP协议概述   8.1.1 ping命令   8.1.2 tracert命令  8.2 ICMP包  8.3 编写网络管理模块   8.3.1 需求分析   8.3.2 界面设计   8.3.3 编写核心icmp类的业务逻辑   8.3.4 编写具有ping功能的业务逻辑   8.3.5 编写具有tracert功能的业务逻辑   8.3.6 编写findmask功能的业务逻辑   8.3.7 编写时间戳功能的业务逻辑  8.4 运行界面  8.5 本章小结 第9章 编写基于.NET的Web Service  9.1 Web Service概述   9.1.1 Web服务基本概念   9.1.2 Web服务的优势   9.1.3 Web服务的架构  9.2 需求分析与设计   9.2.1 需求分析   9.2.2 文件功能设计   9.2.3 数据库设计  9.3 编写Web Service服务系统   9.3.1 构建Web Service   9.3.2 编写Web服务代码   9.3.3 主页面与登录相关的WebService数据访问模块   9.3.4 发表主题相关的Web Service访问模块   9.3.5 投票相关的Web Service访问模块   9.3.6 管理相关的Web Service访问模块  9.4 主页面与登录模块   9.4.1 界面设计   9.4.2 编写业务逻辑  9.5 发表主题模块   9.5.1 界面设计   9.5.2 编写业务逻辑  9.6 投票模块   9.6.1 界面设计   9.6.2 编写业务逻辑  9.7 管理模块   9.7.1 界面设计   9.7.2 编写业务逻辑  9.8 本章小结 第10章 基于.NET的远程技术  10.1 远程技术概述   10.1.1 远程技术开发结构   10.1.2 远程技术使用  10.2 远程控制开发客户端的设计   10.2.1 界面设计与控件使用   10.2.2 客户端的代码设计  10.3 远程控制开发服务器端的设计   10.3.1 界面设计与控件使用   10.3.2 服务器端的代码设计  10.4 运行效果演示  10.5 本章小结 第11章 流媒体在线播放  11.1 需求分析与设计   11.1.1 需求分析   11.1.2 模块设计   11.1.3 数据库设计  11.2 DirectShow接口   11.2.1 滤波图模型   11.2.2 如何使用DirectShow接口   11.2.3 流媒体在线播放相关接口  11.3 流媒体协议   11.3.1 实时传输协议(RTP)   11.3.2 实时传输控制协议(RTCP)   11.3.3 实时流传输协议(RTSP)   11.3.4 流媒体服务过程  11.4 建立.NET的窗体项目   11.4.1 主窗口界面设计   11.4.2 收藏夹数据库相关业务逻辑设计   11.4.3 流媒体在线播放器业务逻辑设计  11.5 运行效果演示  11.6 本章小结 第12章 在线五子棋系统模块  12.1 需求分析与设计   12.1.1 需求分析   12.1.2 模块设计  12.2 五子棋规则类设计   12.2.1 胜负判定类   12.2.2 行棋规则类  12.3 基于TCP协议的通信类   12.4 网络配置模块   12.4.1 网络配置模块的界面设计   12.4.2 网络配置模块的代码设计  12.5 扫描主机模块   12.5.1 扫描主机模块的界面设计   12.5.2 扫描主机模块的代码设计  12.6 主界面模块   12.6.1 主界面模块的界面设计   12.6.2 主界面模块的代码设计  12.7 运行界面  12.8 本章小结 第13章 基于HTTP协议的下载工具  13.1 HTTP协议   13.1.1 HTTP下载理论   13.1.2 .NET的几个支持HTTP协议的类  13.2 异步机制   13.2.1 异步机制的原理   13.2.2 异步类  13.3 下载工具的设计   13.3.1 需求设计   13.3.2 模块设计   13.3.3 界面设计   13.3.4 业务逻辑设计  13.4 运行效果演示  13.5 本章小结 Microsoft Visual C# 2005是一种新的编程环境,它是为生成在.NET Framework上运行的多种应用程序而设计的。C#简单,功能强大,类型安全,而且是面向对象的。C#凭借它的许多创新实现了对应用程序的快速开发。. Visual Studio支持Visual C#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器以及其他工具实现的。通过.NET Framework类库,可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著加快开发周期。 本书大量地使用了.NET Framework提供的类库的函数来协同开发,通过使用这些已经被封装的类来协助开发确实提高了不少效率,为开发工作带来了诸多的便利。 本书共分13章,第1章介绍了利用Visual C# 2005提供的网络命名空间下的诸多API进行套接字的开发,并对网络编程的原理进行了详细的阐述,为后续的章节奠定了基础。 第2章介绍了具有多线程能力的网络应用程序,这使得用户开发的程序能够适应更加复杂的情况。 第3章~第8章是本书的重要部分,主要介绍基于各种不同协议的网络编程应用模块。第3章介绍了基于TCP协议的聊天程序;第4章介绍了基于UDP的通信程序;第5章介绍了使用SNMP协议的网络管理程序;第6章介绍了使用SMTP以及POP3协议的E-mail系统;第7章介绍了基于FTP的文件传输模块;第8章介绍了使用ICMP协议的网络探测程序。 第9章介绍了基于Web Service的电子公告板系统,并结合采用了SQL Server 2005数据库;第10章介绍了使用远程控制技术的应用程序;第11章则介绍了流媒体在线播放系统。.. 第12章介绍了基于TCP通信协议的在线五子棋系统;第13章主要介绍了基于HTTP协议的下载工具,该工具具有多线程下载、断点续传的功能。 本书注重理论指导性和工程实践性,书提供的各个网络应用程序只要稍加修改就可以为读者所用。本书不仅适用于使用Visual C# 2005进行软件开发的广大软件开发人员,也适合高等院校师生学习和参考使用,特别对高校计算机专业的学生进行毕业设计具有非常好的指导价值,也可以作为广大计算机编程爱好者的自学、参考用书。 本书主要由梅晓冬、颜烨青执笔,在编写本书程序的过程,得到了陈璧元的大力支持,在此表示衷心的感谢。此外,还要感谢杨文军、程伟、袁远、刘武、彭澜、李通、李杰、卢茂琼、张燕生、胡燕生、邓湘成、卢下知、王周浩、邱岳、刘流、代本、刘明星、孙靖华等人,他们在本书编写过程给予了我鼓励和支持。 由于时间仓促,加之水平有限,书不足之处在所难免,敬请读者批评指正。... 编者 2008年1月

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值