前面CREATE完成。当中有一个细节我想你应该已经注意到了。
就是当读到 float(4)或者char(100) 时,我们知道这个字符串中需要保存2个内容。一个是column类型,一个是column长度。
我就用了getColumnTypeLength(buffer, &column->type, &column->length); 这个函数,希望把buffer中读到的这两个内容,分别保存到column->type和column->length中。
显而易见,我把解析这种字符串的事情交给了getColumnTypeLength这个函数来做。
这个函数第一个buffer是输入参数。
column->type和column->length是需要函数内部设置值的返回参数。
返回参数必须以传递地址的方式,才能够使函数内部的设置保存下来。
那这个函数究竟怎么实现呢?我觉得这是一个基本功。每个同学都应该自己会写,而且也有很多写法。只要能实现就可以。
下面是我的实现方式。当中会用到一个函数strncmp。他的用处是比较两个字串的特定长度。
strncmp(string,"float(",6) 就是想比较一下float(4)和float(的前6位是否相同
/*
* 描述:float(4)或者char(100)把括号前后的内容分别保存
* 参数:string -- 整体字符串
* 参数:type -- 解析后返回的type(float/char)(返回)
* 参数:length -- 解析后返回的长度(返回)
* 返回:返回0说明创建失败。返回1则创建成功
*/
int getColumnTypeLength(char * string, DataType * type, int * length)
{
char * floatHead = "float(";
char * charHead = "char(";
//如果是float打头的
if (strncmp(string,floatHead,strlen(floatHead))==0)
{
*type = floatType;
string = string+strlen(floatHead);
*length = getLength(string);
return 1;
}
else if (strncmp(string,charHead,strlen(charHead))==0)
{
*type = stringType;
string = string+strlen(charHead);
*length = getLength(string);
return 1;
}
else
{
printf("文件格式有误\n");
return 0;
}
}
解析完类型后,我又用了getLength来解析长度。
比如说我们传递进来的字符串是float(4),则string一开始指向字符串的头地址,也就是指向f
string = string+strlen(floatHead)) 就是把string指针往后挪6位,这样string就指向了4。string指向的字符串就是’4)‘
getLength(string)就是让getLength这个函数解析‘4)’这个字符串得到4这个数值。
分享到:
相关推荐
原创Matlab通过ODBC的方式调用数据库-CreateSchema.m 以下内容为Matlab中文论坛会员,Godman原创。 如果需要转载,请联系Godman会员: 如有疑问可以邮件联系 tntuyh@163.com Godman 2009.3.30 晚 Good ...
致远OA A6 createMysql.jsp 数据库敏感信息泄露漏洞描述致远OA A6 存在数据库敏感信息泄露,攻击者可以通过访问特定的URL获取数据库账户以
数据库管理助手 功能:浏览,添加,编辑ACCESS数据库、MSSQL数据库、MYSQL数据库(要装MYSQL FOR ODBC驱动) 以及通过ODBC连接各种类型的数据库。并可对当前表进行快速查询,以及强大SQL语句执行功能, 使你完轻松...
可以直接创建数据库,CREATE TABLE [dbo].[student],CREATE TABLE [dbo].[records],CREATE TABLE [dbo].[bigclass],CREATE TABLE [dbo].[secclass],CREATE TABLE [dbo].[setting],CREATE TABLE [dbo].[recordstemp],...
DataBaseoffce databaseoffce = new DataBaseoffce(); 创建数据库 databaseoffce.createDatabas("csxhzsd", "c:");...内存数据库 专门针对于需要大量数据且查询次数多的情况下使用,请您多指点 作者 QQ 502905196
2创建数据库 语法格式:CREATE DATABASE [IF NOT EXISTS] db_name [CHARSET utf8] 参数说明 create database是系统命令。 IF NOT EXISTS 是可选项。是⼀个条件判断。如果不存在,则创建数据库。 db_name:是⾃定义...
android数据库例子(create,query,upgrade),见博客:http://blog.csdn.net/baidu_nod/article/details/38178109
数据库管理与应用 2.2.2 使用CREATE DATABASE语句创建数据库.pdf 学习资料 复习资料 教学资源
MySQL Create Database 创建数据库.docx
delphi给access数据库创建新表的方法 delphi给access数据库创建新表的方法
创建用户(以system用户登录) --创建用户,指定表空间 --PS:导入的dmp数据库文件的表空间一定要与导出的数据库的表空间一致 --所以这里要指定用户的表空间为hnust_data create user hnust_prd2 identified by ...
主要介绍了Sql Server 创建数据库脚本语句Create DATABASE的使用,需要的朋友可以参考下
语法:create database 数据库名; (1) 数据库名一般不可以是SQL中的关键字(如create 、database、where、between......) 如果非要使用关键字来命名,可以借助 ` ` : (2) 不可以存在同名的数据库: 当我们再次创建...
1、create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和create database创建数据库的效果一样。 2、create user '[用户名称]'@'%' identified by...
H2 数据库 内存数据库 安装 小型数据库 在内存中读取 速度快
4.理解和掌握SQL语言: 能够熟练地使用create/alter/drop语句创建、修改和删除数据库、基本表;能够使用insert语句;理解和掌握基本的Select语句。 二、实验要求: 理解和掌握create, alter, drop, insert, 以及...
附录 创建同步实训数据库sales:create database sales.sql
本源码是新手学习易语言数据库整理心得,老鸟飞过。使用易语言创建空白Access数据库(*.mdb),经搜索贴子并总结如下:。方法一:。打开一个对话框,然后输入要创建的数据库名称,选择好路径后保存。这是通用方法,...
zabbix 5.0 自带的create.sql.gz下载地址,mysql5.7,导入数据库命令 zcat create.sql.gz |mysql -uxxx -pxxx zabbix
Oracle数据库cannot create oic environment问题解决方案-附件资源