C语言打造简易SQL数据库管理系统DBMS_c

版权申诉
5星 · 超过95%的资源 1 下载量 85 浏览量 更新于2024-10-16 收藏 25KB RAR 举报
资源摘要信息:"DBMS_c.rar_C语言实现DBMS_DBMS_c_c语言DBMS_dbms" 知识点详细说明: 1. DBMS概念及重要性: 数据库管理系统(DBMS,Database Management System)是用于创建、管理和操纵数据库的软件应用系统。DBMS可以处理大量的数据、支持用户通过多种方式访问数据,并确保数据的安全性、完整性和一致性。DBMS在IT行业扮演着基础性的角色,广泛应用于各种业务系统中,如金融、医疗、电商、教育等领域。 2. C语言在DBMS中的应用: C语言是一种广泛使用的、高效能的编程语言,具有跨平台、执行速度快等特点。在早期,DBMS的实现往往采用C语言,因为它允许程序员直接对硬件进行操作,可以高效地管理内存和进程,这对于处理大量数据和实时任务至关重要。即使在现代,许多成熟的数据库系统,如MySQL、PostgreSQL等,在底层仍然使用C语言进行优化。 3. DBMS_c的特点: DBMS_c是一个特定的数据库管理系统,它采用C语言实现。根据描述,该系统支持类似SQL的语言,这意味着用户可以使用类似结构化查询语言(SQL)的方式与数据库进行交互,执行数据查询、插入、更新和删除等操作。这提供了一个用户友好的接口,使得非技术人员也能有效地管理数据库。 4. SQL语言基础: 结构化查询语言(SQL,Structured Query Language)是一种用于存储、检索和操作关系数据库中数据的标准计算机语言。SQL语言支持关系数据库管理系统的创建、修改、删除数据库中的表和视图,以及操作表中的数据等。一个支持简单类SQL语言的DBMS,可以让用户执行基本的数据库操作,如SELECT、INSERT、UPDATE和DELETE等。 5. 数据库管理系统的关键组成部分: - 数据定义语言(DDL):用于创建和修改数据库结构的语句,如创建表、索引、视图等。 - 数据操纵语言(DML):用于操作数据库内数据的语句,包括查询(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)等。 - 数据控制语言(DCL):用于设置或修改数据库权限的语句,如GRANT和REVOKE。 - 事务控制语句:用于确保数据的一致性和完整性,如COMMIT和ROLLBACK。 6. 文件名称列表的含义: ***.txt:该文件可能是一个文本文件,其中包含了与项目相关的信息,比如项目介绍、使用说明、许可证信息或者其他文档资料。***是一个知名的代码资源库,这个文件名暗示了该项目可能在该资源库上托管。 - DBMS_c:这个文件很可能是一个源代码文件或者是一个包含DBMS_c项目所有代码的压缩包,表明了项目的核心文件或目录名称。 以上知识点总结了DBMS_c项目的标题、描述、标签和文件名称列表所涉及的专业知识,为理解该压缩包中的DBMS实现提供了详细的背景信息和技术细节。

grant execute on dbms_crypto to system; declare input_string VARCHAR2 (200) := 'Secret Message'; output_string VARCHAR2(2000); encrypted_raw RAW(2000); decrypted_raw RAW(2000); num_key_bytes NUMBER := 256/8; key_bytes_raw RAW(32); encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; begin DBMS_OUTPUT.PUT_LINE(input_string); key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES(num_key_bytes); encrypted_raw := DBMS_CRYPTO.ENCRYPT ( src => UTL_I18N.STRING_TO_RAW(input_string, 'AL32UTF8'), typ => encryption_type, key => key_bytes_raw ); decrypted_raw := DBMS_CRYPTO.DECRYPT ( src => encrypted_raw, typ => encryption_type, key => key_bytes_raw ); output_string := UTL_I18N.RAW_TO_CHAR(decrypted_raw, 'AL32UTF8'); DBMS_OUTPUT.PUT_LINE(output_string); end; declare l_src_data varchar2(20); l_type pls_integer :=DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_key varchar2(20) :='0123456789123456'; l_encval raw(2000); CURSOR secret_cursor IS select phonenumber from customer; begin OPEN secret_cursor; LOOP FETCH secret_cursor INTO l_src_data; l_encval :=dbms_crypto.encrypt( src=>utl_i18n.string_to_raw(l_src_data,'AL32UTF8'), typ=>l_type, key=>utl_i18n.string_to_raw(l_key,'AL32UTF8')); DBMS_OUTPUT.PUT_LINE (l_encval); EXIT WHEN secret_cursor%NOTFOUND; END LOOP; CLOSE secret_cursor; end; declare ;_src_data row(100) :=hextoraw("190248129038903853275ijdkvjkad'); l_type pls_integer :=dbms_crypto.encrypt_aes128+ + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_key varchar2(20) :='0123456789123456'; l_decval raw(200); begin l_decval :=dbms_crypto.decrypt( src=>l_src_data, typ=>l_type, key=>utl_i18n.string_to_raw(l_key,'AL32UTF8')); end; SELECT Price FROM PRODUCT WHERE ProductID = 5;修正这一段代码

2023-05-26 上传

grant execute on dbms_crypto to system; -- 第一个代码块 declare input_string VARCHAR2 (200) := 'Secret Message'; output_string VARCHAR2(2000); encrypted_raw RAW(2000); decrypted_raw RAW(2000); num_key_bytes NUMBER := 256/8; key_bytes_raw RAW(32); encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; begin DBMS_OUTPUT.PUT_LINE(input_string); key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES(num_key_bytes); encrypted_raw := DBMS_CRYPTO.ENCRYPT(src => UTL_I18N.STRING_TO_RAW(input_string, 'AL32UTF8'), typ => encryption_type, key => key_bytes_raw); decrypted_raw := DBMS_CRYPTO.DECRYPT(src => encrypted_raw, typ => encryption_type, key => key_bytes_raw); output_string := UTL_I18N.RAW_TO_CHAR(decrypted_raw, 'AL32UTF8'); DBMS_OUTPUT.PUT_LINE(output_string); end; -- 第二个代码块 declare l_src_data varchar2(20); l_type pls_integer := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_key varchar2(20) := '0123456789123456'; l_encval raw(2000); cursor secret_cursor is select phonenumber from customer; begin open secret_cursor; loop fetch secret_cursor into l_src_data; exit when secret_cursor%notfound; l_encval := dbms_crypto.encrypt(src => utl_i18n.string_to_raw(l_src_data,'AL32UTF8'), typ => l_type, key => utl_i18n.string_to_raw(l_key,'AL32UTF8')); dbms_output.put_line(l_encval); end loop; close secret_cursor; end; -- 第三个代码块 declare l_src_data raw(100) := hextoraw('190248129038903853275ijdkvjkad'); l_type pls_integer := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_key varchar2(20) := '0123456789123456'; l_decval raw(200); begin l_decval := dbms_crypto.decrypt(src => l_src_data, typ => l_type, key => utl_i18n.string_to_raw(l_key,'AL32UTF8')); end; -- SQL 查询语句 SELECT Price FROM PRODUCT WHERE ProductID = 5;declare * ERROR at line 18: ORA-06550: line 18, column 1: PLS-00103: Encountered the symbol "DECLARE"报错

2023-05-26 上传