c数据库工厂
都是可以的
C/C++与数据库交互,像 mssql / mysql / oracle 等,一般都有成熟的第三方库,这些库里面无非就是封装了与数据库通讯的方式和通讯协议
搜一下你要用的数据库相关的 API 文档,会说得很清楚
任何文件都是二进制数据,关键是数据存储的组织方式
通用扩展名的文件,像gif/doc/jpg/wav,格式都是固定的
读出数据来以后按照一定的规律去解析就能可以正确解读
这个规律,就是文件存储格式,也可以搜到相关的文档
⑵ C# 工厂模式获得数据库连接 简单的例子
工厂模式不是解决你所说问题的。
你只要把new SqlConnect的过程写成一个静态方法,在你想实例化sqlConnection的时候直接调用你写的方法就好了。
想学模式推荐你本书:大话设计模式
⑶ 用c语言怎么连接数据库呢
25.2.2. C API函数概述
这里归纳了C API可使用的函数,并在下一节详细介绍了它们。请参见25.2.3节,“C API函数描述”。
函数
描述
mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。
mysql_autocommit()
切换 autocommit模式,ON/OFF
mysql_change_user()
更改打开连接上的用户和数据库。
mysql_charset_name()
返回用于连接的默认字符集的名称。
mysql_close()
关闭服务器连接。
mysql_commit()
提交事务。
mysql_connect()
连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect()取代。
mysql_create_db()
创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。
mysql_data_seek()
在查询结果集中查找属性行编号。
mysql_debug()
用给定的字符串执行DBUG_PUSH。
mysql_drop_db()
撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。
mysql_mp_debug_info()
让服务器将调试信息写入日志。
mysql_eof()
确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()或mysql_error()取而代之。
mysql_errno()
返回上次调用的MySQL函数的错误编号。
mysql_error()
返回上次调用的MySQL函数的错误消息。
mysql_escape_string()
为了用在SQL语句中,对特殊字符进行转义处理。
mysql_fetch_field()
返回下一个表字段的类型。
mysql_fetch_field_direct()
给定字段编号,返回表字段的类型。
mysql_fetch_fields()
返回所有字段结构的数组。
mysql_fetch_lengths()
返回当前行中所有列的长度。
mysql_fetch_row()
从结果集中获取下一行
mysql_field_seek()
将列光标置于指定的列。
mysql_field_count()
返回上次执行语句的结果列的数目。
mysql_field_tell()
返回上次mysql_fetch_field()所使用字段光标的位置。
mysql_free_result()
释放结果集使用的内存。
mysql_get_client_info()
以字符串形式返回客户端版本信息。
mysql_get_client_version()
以整数形式返回客户端版本信息。
mysql_get_host_info()
返回描述连接的字符串。
mysql_get_server_version()
以整数形式返回服务器的版本号。
mysql_get_proto_info()
返回连接所使用的协议版本。
mysql_get_server_info()
返回服务器的版本号。
mysql_info()
返回关于最近所执行查询的信息。
mysql_init()
获取或初始化MYSQL结构。
mysql_insert_id()
返回上一个查询为AUTO_INCREMENT列生成的ID。
mysql_kill()
杀死给定的线程。
mysql_library_end()
最终确定MySQL C API库。
mysql_library_init()
初始化MySQL C API库。
mysql_list_dbs()
返回与简单正则表达式匹配的数据库名称。
mysql_list_fields()
返回与简单正则表达式匹配的字段名称。
mysql_list_processes()
返回当前服务器线程的列表。
mysql_list_tables()
返回与简单正则表达式匹配的表名。
mysql_more_results()
检查是否还存在其他结果。
mysql_next_result()
在多语句执行过程中返回/初始化下一个结果。
mysql_num_fields()
返回结果集中的列数。
mysql_num_rows()
返回结果集中的行数。
mysql_options()
为mysql_connect()设置连接选项。
mysql_ping()
检查与服务器的连接是否工作,如有必要重新连接。
mysql_query()
执行指定为“以Null终结的字符串”的SQL查询。
mysql_real_connect()
连接到MySQL服务器。
mysql_real_escape_string()
考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。
mysql_real_query()
执行指定为计数字符串的SQL查询。
mysql_refresh()
刷新或复位表和高速缓冲。
mysql_reload()
通知服务器再次加载授权表。
mysql_rollback()
回滚事务。
mysql_row_seek()
使用从mysql_row_tell()返回的值,查找结果集中的行偏移。
mysql_row_tell()
返回行光标位置。
mysql_select_db()
选择数据库。
mysql_server_end()
最终确定嵌入式服务器库。
mysql_server_init()
初始化嵌入式服务器库。
mysql_set_server_option()
为连接设置选项(如多语句)。
mysql_sqlstate()
返回关于上一个错误的SQLSTATE错误代码。
mysql_shutdown()
关闭数据库服务器。
mysql_stat()
以字符串形式返回服务器状态。
mysql_store_result()
检索完整的结果集至客户端。
mysql_thread_id()
返回当前线程ID。
mysql_thread_safe()
如果客户端已编译为线程安全的,返回1。
mysql_use_result()
初始化逐行的结果集检索。
mysql_warning_count()
返回上一个SQL语句的告警数。 详见:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-function-overview
http://dev.mysql.com/doc/refman/5.0/en/c.html
⑷ C语言,数据库
嵌入SQL的基本特点是:
1、每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL语句。这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。
2、如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”,在Fortran中必须有续行符。其他语言也有相应规定。
3、每一条嵌入SQL语句都有结束符号,如:在C中是“;”。
4、嵌入SQL语句的关键字不区分大小写。
5、可以使用“/*….*/”来添加注释。
从上面这个例子看出,INFORMIX数据库的嵌入SQL语句的格式同其他数据库基本相同。但是,它也有它自己本身的一些特点。本节把重点放在INFORMIX数据库所独有的一些语句或处理方式。
5.2 宿主变量
宿主变量就是在嵌入式SQL语句中引用主语言说明的程序变量。如:
EXEC SQL connect to :hostvar;
1)、定义宿主变量
方法1:采用BEGIN DECLARE SECTION 和END DECLARE SECTION之间给主变量说明。如:
EXEC SQL BEGIN DECLARE SECTION;
char fname[ FNAME_LEN + 1 ];
char lname[ LNAME_LEN + 1 ];
EXEC SQL END DECLARE SECTION;
方法2:在每个变量的数据类型前加上“$”。如:
$int hostint;
$double hostdbl;
ESQL/C对宿主变量的大小写敏感。但是,ESQL/C的关键字、语句标志符、游标名大小写不敏感。在SQL语句中,除了使用“:”来标志宿主变量外,还可以使用“$”。当然,“:”是ANSI标准。如:EXEC SQL connect to $hostvar。对于注释,可以使用“--”,也可以使用标准的“/*…*/”。
2)、宿主变量和NULL
方法1:使用指示符变量。
方法2:使用函数risnull()和rsetnull()。
3)、指示符变量
大多数程序设计语言(如C)都不支持NULL。所以对NULL的处理,一定要在SQL中完成。我们可以使用主机指示符变量来解决这个问题。在嵌入式SQL语句中,宿主变量和指示符变量共同规定一个单独的SQL类型值。指示变量和前面宿主变量之间用一个空格相分隔。如:
EXEC SQL select lname, company
into :name INDICATOR :nameind, :comp INDICATOR :compind
nameind是name变量的指示符,而compind是comp变量的指示符。
可以通过以下三种方法使用指示符变量:
方法1、使用INDICATOR关键字。
:hostvar INDICATOR :indvar
方法2、
:hostvar :indvar
方法3、使用$符号。
$hostvar $indvar。
无论采用哪种方法,都是实现指示符变量的作用。即:当宿主变量hostvar应该返回NULL时,指示符变量为-1。当宿主变量hostvar应该返回不是NULL而且无需截断时,指示符变量为0。当返回值太大而需要截断时,指示符变量是截断前数据的长度。SQLSTATE会返回01004错误信息。请看下面这个例子:
EXEC SQL BEGIN DECLARE SECTION;
char name[16];
char comp[20];
short nameind;
short compind;
EXEC SQL END DECLARE SECTION;
EXEC SQL select lname, company
into :name INDICATOR :nameind, :comp INDICATOR :compind
from customer
where customer_num = 105;
如果对应105的company为NULL,则compind小于0,如果lname的结果大于15个字节,那么name包含前15个字符。
4)、宿主变量的数据类型
INFROMIX ESQ/C的宿主变量数据类型除了标准C的数据类型外,可以是它自己定义的数据类型。如:
lvarchar数据类型
EXEC SQL BEGIN DECLARE SECTION;
varchar varc_name[n + 1];
EXEC SQL END DECLARE SECTION;
lint8数据类型
EXEC SQL BEGIN DECLARE SECTION;
int8 int8_var1;
ifx_int8_t int8_var2;
EXEC SQL BEGIN DECLARE SECTION;
lfixchar数据类型
EXEC SQL BEGIN DECLARE SECTION;
boolean flag;
fixchar my_boolflag;
int id;
EXEC SQL END DECLARE SECTION;
lDecimal数据类型
#define DECSIZE 16
struct decimal
{
short dec_exp;
short dec_pos;
short dec_ndgts;
char dec_dgts[DECSIZE];
};
typedef struct decimal dec_t;
lDatetime数据类型
EXEC SQL include datetime;
EXEC SQL BEGIN DECLARE SECTION;
datetime year; /* will cause an error */
datetime year to day year, today; /* ambiguous */
EXEC SQL END DECLARE SECTION;
lInterval hour等数据类型
EXEC SQL BEGIN DECLARE SECTION;
interval day(3) to day accrued_leave, leave_taken;
interval hour to second race_length;
interval scheled;
EXEC SQL END DECLARE SECTION;
l其他数据类型
EXEC SQL BEGIN DECLARE SECTION;
loc_t my_simple_lo;
EXEC SQL END DECLARE SECTION;
my_simole_lo.loc_loctype = LOCMEMORY;
l在INFORMIX数据库中,'\0'表示为NULL。如:
id = 1;
flag = '\0'; /* valid boolean assignment to FALSE */
EXEC SQL insert into table2 values (:id, :flag); /* inserts FALSE */
在以SQL为基础的DBMS支持的数据类型与程序设计语言支持的数据类型之间有很大差别。如果你通过宿主变量从数据库取值,或者通过宿主变量向数据库插入值,都存在数据类型转换的问题。
⑸ C语言数据库设计
create table student_exercise /*学生个人作业信息(学生查看)*/( exercise_id int not null, /*外键*/ exercise_content_id int not null, student_id varchar(20) not null,/*修改过*/ class_name varchar(20) not null, exercise_receive_mark int not null, student_answer varchar(500) not null, standard_answer varchar(500) not null,)
⑹ 数据库题
81. 对于分布式数据库,可以简单归纳为 ( A )
A.数据逻辑上分散,物理上统一 B.数据物理上分散,逻辑上统一
C.数据在逻辑上、物理上都是分散的 D.数据在逻辑上、物理上都是统一的
82. 子模式DDL用来描述 ( A )
A. 数据库的总体逻辑结构B. 数据库的局部逻辑结构
C. 数据库的物理存储结构D. 数据库的概念结构
83. 在DBS中,DBMS和OS之间的关系是 ( B )
A. 相互调用 B. DBMS调用OS
C. OS调用DBMS D. 并发运行
84.在关系R与关系S进行自然连接时,只把R中原该舍弃的元组保存到新关系中,这种操作称为 ( C )
A.外连接 B.内连接 C.左外连接 D.右外连接
85.在SQL中使用FOREIGN KEY 时,与之配合的语句是 ( D )
A.EXISTS B.EXCEPT C.TABLE D.REFERENCES
86. 在数据库设计中,将ER图转换成关系数据模型的过程属于 ( C )
A. 需求分析阶段 B. 逻辑设计阶段 C. 概念设计阶段 D. 物理设计阶段
87.定义片段以及全局关系与片段之间映像的模式是 ( D )
A.外模式 B. 概念模式 C.分片模式 D.分配模式
88.在数据库技术中,未提交的随后又被撤消的数据称为( D )
A.错误数据 B.冗余数据 C.过期数据 D.脏数据
89.下述各项中,属于数据库系统的特点的是 ( C )
A.存储量大 B.存取速度快 C.数据独立性 D.操作方便
91. SQL的全局约束是指基于元组的检查子句和 (B )
A. 非空值约束 B. 域约束子句
C. 断言 D. 外键子句
92. 分布式数据库系统中分片模式和分配模式均是 ( C )
A. 全局的 B. 局部的
C. 分布的 D. 集中的
93.在数据库系统中,视图可以提供数据的(A)
A.完整性 B.并发性 C.安全性 D.可恢复性
94.在分布式数据库中,数据的垂直分片是对全局关系的(B)
A.选择操作 B.投影操作
C.自然联接操作 D.半联接操作
95. 在关系数据库中,表与表之间的联系是通过( D )实现的。
A.实体完整性规则B.参照完整性规则
C.用户自定义的完整性规则D.主键
96. 以下操作中,不能用DML实现的是 ( B )
A.数据查询B.定义数据库的三级结构
C.数据插入D.数据删除
97. 如果关系R和S进行自然连接时,只把S中原该舍弃的元组保存到新关系中,这种操作称为 ( D )
A.外连接B.内联接 C.左连接D.右外连接
98. 在关系中,能唯一标识组的属性集称为关系模式的 ( B )
A.候选键 B.主键 C.外键 D.超键
99. 能够消除多值依赖引起的冗余的范式是 ( C )
A.2NF B.3NF C.4NF D.BCNF
100.在面向对象的模型中,表示实体中的每个属性时,使用 ( A )
A.两个变量,一个消息 B.两个变量,两个消息
C.一个变量,两个消息 D.一个变量,一个消息
老长时间不看了 不干保证全队…………
⑺ C语言数据库。
这不是一个库,这只是一小段代码。数据库的概念你还需要好好学,数据库是一个文件,他可以存放很多数据,并对数据进行处理的。你这个程序只需要在一个数据库下建一张表就够用了
⑻ 怎样用C语言编写数据库管理系统急求急求!!
用ADO访问SQL Server数据库那个么?
我毕业设计做的是那个,给你找找吧。
学校时候的代码,代码规范比较差。代码质量没有问题。
⑼ C语言数据库是什么
数据库是用来存入数据的仓库。用户可以对文件中的数据进行新增、查询、更新、删除等操作。但是C语言和数据库是两个东西,他们之间的关系就是C语言可以用来开发数据库管理软件,也可以通过C语言借助于SQL语句来操作数据库。
C语言普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。具体体现在以下三个方面:
其一,广泛性。C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了34种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。
其二,简洁性。9 类控制语句和32个KEYWORDS是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以适用广大编程人员的操作,提高其工作效率,同 时还能够支持高级编程,避免了语言切换的繁琐。
(9)c数据库工厂扩展阅读
数据库架构
1、内层:最接近实际存储体,亦即有关数据的实际存储方式。
2、外层:最接近用户,即有关个别用户观看数据的方式。
3、概念层:介于两者之间的间接层。