对于C语言的数据库脚本使用system()是一种好方法吗?

Enj*_*ing 6 c database system

我正在寻找从C程序连接数据库.但我认为ODBC连接,登录和所有需要一些库.另外我有一个像Tiny C Compiler这样的最小编译器,速度非常快.我不想使用连接和查询数据库所需的任何ODBC逻辑等.

所以我使用的方法如下.

我使用了一个bteq脚本(teradata),它将具有登录,查询和注销命令.(FYI bteq是一个命令行数据库实用程序.你可以通过转到exe的路径在命令提示符中使用它类似于mysql.exe.你可以用mysql.exe等替换bteq).而我用

system("bteq <myscript.txt >out.txt");
Run Code Online (Sandbox Code Playgroud)

myscript.txt将如下所示..

.logon boxname/user,password;
select date;
.logoff;
Run Code Online (Sandbox Code Playgroud)

上面的脚本将登录到数据库和查询日期(您可以根据数据库引擎和需要更改查询和编写脚本)并将输出提供给out.txt.

现在我将使用fgetc,fscanf或fgets解析我想要的行X列的out.txt.并使用数据检查并在任何服务器上使用PHP发送邮件

system("c:/server/php/php.exe sendmail.php");.

我们可以通过简单的C程序为许多数据库引擎(如mysql,...等)执行相同的操作.

现在我的问题是上述方法是否有任何缺陷.如果是,那么我该如何克服它.我问这个问题因为我认为这种方法是非常规的.请对此方法发表意见.我不打算执行所需的时间,使用的RAM,性能问题等.我知道system()函数是耗时的,这不是我关心的问题.我还开发了访问查询结果的特定函数(类似于访问平面文件).如果您对此方法有任何改进,请告诉我.如果您知道这方面的任何缺陷,请告诉我.欢迎各种建议.

我的环境是:使用Tiny C Compiler在Windows上进行teradata bteq

xto*_*ofl 1

该方法很好:通过以适当的语言实现数据库子系统和解析器子系统来解耦它们,这很棒。

只是这个小东西 - 但我可能会弄错,因为我不熟悉 bteq:该程序需要在执行文件夹中安装一个 bteq 脚本;该脚本将包含用户名和密码。如果这些内容没有以某种方式加密,则可能存在安全缺陷。