Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最近从sqlite切换到mysql。需要在c中转换一些代码_Mysql_C_Api_Sqlite - Fatal编程技术网

最近从sqlite切换到mysql。需要在c中转换一些代码

最近从sqlite切换到mysql。需要在c中转换一些代码,mysql,c,api,sqlite,Mysql,C,Api,Sqlite,我正在写C程序来访问数据库。 我最近从sqlite切换到mysql。 我不熟悉mysql c api,所以我需要帮助转换一些代码 下面的示例是使用参数执行sql语句 sqlite: char*zSQL=sqlite3\u mprintf(“从仓库中选择价格,其中p\u ID='%q',输入值); sqlite3\u prepare\u v2(句柄,zSQL,-1,&stmt,0); 我在mysql中的尝试: char zSQL[60]={'\0'}; int n=0; n=sprintf(zS

我正在写C程序来访问数据库。 我最近从sqlite切换到mysql。 我不熟悉mysql c api,所以我需要帮助转换一些代码

下面的示例是使用参数执行sql语句

sqlite:

char*zSQL=sqlite3\u mprintf(“从仓库中选择价格,其中p\u ID='%q',输入值);
sqlite3\u prepare\u v2(句柄,zSQL,-1,&stmt,0);
我在mysql中的尝试:

char zSQL[60]={'\0'};
int n=0;
n=sprintf(zSQL,“从仓库中选择价格,其中p_ID='%s',输入_值);
mysql_real_查询(conn,zSQL,n);
另一个例子是将sql语句的结果解析为变量

sqlite:

双倍价格\u值=0;
如果(sqlite3_步骤(stmt)=SQLITE_行){
price\u value=sqlite3\u column\u double(stmt,0);
}
mysql:

MYSQL\u行;
while((row=mysql\u fetch\u row(result)))
{
price_value=atof(第[0]行);
}
虽然mysql中的代码适合我,但我觉得我没有充分利用API。 mysql c api中是否有与
sqlite3\u mprintf()和
sqlite3\u column\u double()具有相同功能的函数

编辑: 我尝试使用mysql\u real\u escape\u string()

ulong in_length=strlen(输入值);
字符输入[2*英寸长度)+1];
mysql\u real\u escape\u字符串(conn,input\u esc,input\u value,in\u length);
字符sql\u stmnt[56]={'\0'};
n=sprintf(zSQL,“从仓库中选择价格,其中p_ID='%s',输入'u esc”);
mysql\u real\u query(conn,sql stmnt,n);

对于您的第一个例子,简短的回答是“不”,您必须自己做,请参见

第二个,是的,就是这样,需要额外检查
行[0]
是否确实是double类型

或者,您可以使用prepared语句API,其工作原理与sqlite3中的非常类似。关键是提供类型为
MYSQL\u BIND
的缓冲区,然后将输入绑定到该缓冲区,或者将MYSQL绑定输出值


准备好的报表文档:

我找到了这个。它和我的很相似。我可以只使用
mysql\u real\u escape\u string()
input\u value
吗?请看我的帖子,了解我在
mysql\u real\u escape\u string()中的尝试。
 unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)