小编use*_*515的帖子

将C变量传递给SQL命令

我是一个使用libpq并在postgresql数据库上工作的新手.

所以,我可以使用C程序插入/更新/等一个postgresql数据库,只要我在引号内给出实际值.

我想知道如何在命令中传递字符串/整数变量?

例如,以下代码将一个名为"comment"的列添加到现有表"people"中,其中包含"TRUE"默认值.我需要通过"FALSE"更新"comment"的值,其中id = 2.

    #include <stdio.h>
    #include <stdlib.h>
    #include <libpq-fe.h>
    #include <string.h>

 void exit_nicely(PGconn *conn)
 {
  PQfinish(conn);
  exit(1);
 }

 int main()
 {
     PGconn *conn;
     PGresult *res;
 int nFields;
 int row_count=0,col_count=0;
 int row=0;
 int col=0;

 conn = PQconnectdb("dbname=test host=localhost user=postgres password=xxx");

     if(PQstatus(conn) == CONNECTION_BAD) 
     {
    fprintf(stderr, "Connection to database \"%s\" failed.\n", PQerrorMessage(conn));
            fprintf(stderr, "%s", PQerrorMessage(conn));
            exit_nicely(conn);
     }

res = PQexec(conn, "ALTER TABLE people ADD comment VARCHAR(50) DEFAULT 'TRUE'");
if((!res) || PQresultStatus(res) != PGRES_COMMAND_OK) 
{
    fprintf(stderr, "Adding col to table …
Run Code Online (Sandbox Code Playgroud)

c postgresql libpq

2
推荐指数
1
解决办法
2936
查看次数

使用 echo 和 system 在 C 中运行软件

我正在尝试运行一个名为 BLASTP 的生物程序,它接收两个字符串(代码中的 fasta_GWIDD 和 fasta_UNIPROT)并比较它们。我遇到的问题是在代码中使用了 echo/system。谁能建议我错过了什么?

    for(i=0;i<index1;i++)
    {
        sprintf(fasta_GWIDD,">%s\\n%s\n",fasta_name1[i],fasta_seq1[i]);
        setenv("GwiddVar", fasta_GWIDD, 1) ;
        sprintf(fasta_UNIPROT,">%s\\n%s\n",fasta_name2[i],fasta_seq2[i]);
        setenv("UniprotVar", fasta_UNIPROT, 1) ;
        system("blastp -query <(echo -e $GwiddVar) -subject<(echo -e $UniprotVar)");
    }
Run Code Online (Sandbox Code Playgroud)

错误是:

sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `blastp -query <(echo -e $GwiddVar) -subject<(echo -e $UniprotVar)'
Run Code Online (Sandbox Code Playgroud)

c shell blast

1
推荐指数
1
解决办法
524
查看次数

标签 统计

c ×2

blast ×1

libpq ×1

postgresql ×1

shell ×1