我是一个使用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) 我正在尝试运行一个名为 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)