学习ORACLE中关于配置文件的读取和修改心得以及问题
2012-02-19 16:14
561 查看
最近在学习ORACLE数据库,其中学习到配置文件的读取和修改时,
碰到了一点小问题,自己在解决的过程中也有了一点小心得,所以想记下来和大家分享一下,
本人属于菜鸟水平,所以这些心得对于大虾们可能会觉得好笑
(1)、 首先是配置文件的编写,一开始我是这么写的,例子如下:
#数据库的实例名
dbstring=(oracle)
#数据库system的密码
systempass=(manager)
#连接数据库库的用户的密码
dbpass=(pos)
#是否是第一次运行
isfirst=(yes)
#end
大家可能注意到了,我的 “dbstring=(oracle)”等数据都没有顶格写,
而是在前面用TAB键做了缩进,这正是造成我后面对配置文件进行回改时出现错误的原因。
我写的读取配置文件程序如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct _data
{
char key[20];
char val[20];
}DATA;
DATA nowdata[5];
int read_conf(char *filename)
{
FILE *fp;
char buf[1024]="";
char *p;
char nkey[20];
char nval[20];
int i=0;
fp=fopen(filename,"r+");
if (fp == NULL)
{
printf("open file failure!\n");
return 1;
}
while (1)
{
memset(buf,0,sizeof(buf));
p=fgets(buf,sizeof(buf),fp);
if (p == NULL)
{
break;
}
if (buf[0] == '#')
{
continue;
}
p=strchr(buf,'=');
if (p != NULL)
{
strcpy(nval,p+2);
*p='\0';
strcpy(nkey,buf);
p=strchr(nval,')');
if (p != NULL)
{
*p='\0';
}
strcpy(nowdata[i].key,nkey);
strcpy(nowdata[i].val,nval);
if (strcmp(nkey,"isfirst") == 0)
{
fseek(fp,-6,SEEK_CUR);
fputs("no)\r\n",fp);
}
i++;
}
}
fclose(fp);
return i;
}
int main(int argc,char *argv[])
{
int i,j;
i=read_conf("poss.conf");
for (j=0;j<i ;j++ )
{
printf("%s(%s)\n",nowdata[j].key,nowdata[j].val);
}
return 0;
};
问题就出现在我在程序中做记号那行,因为我的配置文件的数据是没有顶格写的,
而是在前面加了个TAB键,一开始自己认为美观,
,但是我在比较的时候是
和“isfirst”进行比较的,所以这行程序条件不满足,下面的回改程序就没有运行,
没有达到对配置文件第一次进行读取后,程序自动将“yes”改为“no”的目的。
所以应该将配置文件中的TAB键删除,或者在比较程序中和“\tisfirst”进行比较。
(2)、本人在读取配置文件的过程中碰到一个很奇怪的问题,我一开始写了
个读取配置文件的程序,然后以另外一种方法又写了个类似的程序,分别用
两个程序对同一个配置文件进行读写,发现第二个程序对配置文件能够正确
读取,但是配置文件不会发生修改,“yes”参数不会自动修改为“no”,但是第
二次读取确实已经变为"no"了,只是配置文件中无法体现,我就在同目录下
原原本本的复制了一个一模一样的配置文件,只是文件名改过一下,用第二
个程序可以实现正确的读取和回改。
难道一个配置文件只能被一个程序进行回改么,希望哪位知道的朋友能够
为我解惑,谢谢!
碰到了一点小问题,自己在解决的过程中也有了一点小心得,所以想记下来和大家分享一下,
本人属于菜鸟水平,所以这些心得对于大虾们可能会觉得好笑
(1)、 首先是配置文件的编写,一开始我是这么写的,例子如下:
#数据库的实例名
dbstring=(oracle)
#数据库system的密码
systempass=(manager)
#连接数据库库的用户的密码
dbpass=(pos)
#是否是第一次运行
isfirst=(yes)
#end
大家可能注意到了,我的 “dbstring=(oracle)”等数据都没有顶格写,
而是在前面用TAB键做了缩进,这正是造成我后面对配置文件进行回改时出现错误的原因。
我写的读取配置文件程序如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct _data
{
char key[20];
char val[20];
}DATA;
DATA nowdata[5];
int read_conf(char *filename)
{
FILE *fp;
char buf[1024]="";
char *p;
char nkey[20];
char nval[20];
int i=0;
fp=fopen(filename,"r+");
if (fp == NULL)
{
printf("open file failure!\n");
return 1;
}
while (1)
{
memset(buf,0,sizeof(buf));
p=fgets(buf,sizeof(buf),fp);
if (p == NULL)
{
break;
}
if (buf[0] == '#')
{
continue;
}
p=strchr(buf,'=');
if (p != NULL)
{
strcpy(nval,p+2);
*p='\0';
strcpy(nkey,buf);
p=strchr(nval,')');
if (p != NULL)
{
*p='\0';
}
strcpy(nowdata[i].key,nkey);
strcpy(nowdata[i].val,nval);
if (strcmp(nkey,"isfirst") == 0)
{
fseek(fp,-6,SEEK_CUR);
fputs("no)\r\n",fp);
}
i++;
}
}
fclose(fp);
return i;
}
int main(int argc,char *argv[])
{
int i,j;
i=read_conf("poss.conf");
for (j=0;j<i ;j++ )
{
printf("%s(%s)\n",nowdata[j].key,nowdata[j].val);
}
return 0;
};
问题就出现在我在程序中做记号那行,因为我的配置文件的数据是没有顶格写的,
而是在前面加了个TAB键,一开始自己认为美观,
,但是我在比较的时候是
和“isfirst”进行比较的,所以这行程序条件不满足,下面的回改程序就没有运行,
没有达到对配置文件第一次进行读取后,程序自动将“yes”改为“no”的目的。
所以应该将配置文件中的TAB键删除,或者在比较程序中和“\tisfirst”进行比较。
(2)、本人在读取配置文件的过程中碰到一个很奇怪的问题,我一开始写了
个读取配置文件的程序,然后以另外一种方法又写了个类似的程序,分别用
两个程序对同一个配置文件进行读写,发现第二个程序对配置文件能够正确
读取,但是配置文件不会发生修改,“yes”参数不会自动修改为“no”,但是第
二次读取确实已经变为"no"了,只是配置文件中无法体现,我就在同目录下
原原本本的复制了一个一模一样的配置文件,只是文件名改过一下,用第二
个程序可以实现正确的读取和回改。
难道一个配置文件只能被一个程序进行回改么,希望哪位知道的朋友能够
为我解惑,谢谢!
相关文章推荐
- JAVA中读取配置文件以及修改配置文件
- 关于Assembly.CreateInstance中被启动对象读取配置文件的问题
- 有关oracle遇到日期显示问题,导入导出,安装,卸载,修改listener配置文件,创建用户和表空间等的部分问题.
- 关于oracle spfile配置文件问题
- Spring学习-11:配置文件引入的问题(配置文件过于庞大,不便于修改的处理方法)
- 关于系统读取properties配置文件的路径问题,包括打成jar包的运行文件
- JavaWeb项目读取和修改配置文件问题
- 关于ubuntu12.04.1上修改MySQL的my.cnf参数配置文件问题
- oracle的transname.ora配置文件修改遇到的问题(无监听)及解决
- thinkphp 配置修改 读取配置项 以及文件修改
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- QT学习心得-关于pro配置出现的问题
- oracle11g问题:新建oracle用户后,在oracle用户下找不到.bash_profile文件;不能修改环境变量配置。
- 关于利用opendatasource 读取excel文件中的数据问题以及更新数据库中对应数据的问题
- 关于如何使用properties读取配置文件内容问题
- win10 关于oracle和PLSQL Developer的安装、配置,以及常见问题解决
- Java读取配置文件的几种方法以及路径问题
- 关于读取Src下配置文件问题解决办法
- 关于properties配置文件读写,追加以及中文乱码问题
- 关于Tomcat下修改配置文件后在eclipse里启动后还原的问题?