大家好~~
    我最近做个聊天程序,使用的C API连接的MYSQL数据库。数据库名称为chat.sql,其中包含了一个对话表holophrase,包括3个字段,id,question,answer,例如:id       question       answer
1         你好!        你也好!
2         吃了吗?       吃了!
3         晚安~          晚安!
..       ......         ......现在假如要查找question为'晚安'对应的answer,VC代码应该如何写?SQL语句为:
"SELECT question,answer FROM holophrase WHERE question like '%" + user_quest + "%'"其中 string user_quest = "晚安";(由于查找的"晚安"没有带“ ~ ”符号,所以SQL中用了like)
谢谢大家帮忙!

解决方案 »

  1.   

    可以用RecordSet获得执行sql后的记录集,然后得到数据
      

  2.   

    我现在在用C API做实验,可是问题很多。
    用mysql_query,mysql_store_result等等。
      

  3.   

    int n3 = sprintf(sqlStmt, "SELECT question,answer FROM holophrase WHERE question         like '%" + user_quest + "%'");mysql_real_query(&mysql, sqlStmt, n3);res3 = mysql_use_result(&mysql);然后再怎么写我不知道了
      

  4.   


    MYSQL * myData ;
    MYSQL_RES * res ;
    MYSQL_ROW  row ;
    if ( (myData = mysql_init((MYSQL*) 0)) &&
             mysql_real_connect( myData, NULL, NULL, NULL, NULL, MYSQL_PORT,
                                     NULL, 0 ) )
    {
                        if ( mysql_select_db( myData, "chat.sql" ) < 0 )
                          return -1;
    }
    else
    {
                      mysql_close( myData ) ;
                      return -1 ;
    }
    CString sql = "SELECT question,answer FROM holophrase WHERE question like '%" + user_quest + "%'";
    if ( mysql_query( myData, sql.c_str()))
    {
                      mysql_close( myData ) ;
                      return -1;
    }res = mysql_store_result( myData ) ;
    if( row = mysql_fetch_row( res ) )
    {
        ........
    }mysql_free_result( res ) ;
    mysql_close( myData ) ;
      

  5.   

    Good Good Study,Day Day Up!...
    :)
      

  6.   

    mysql_query( myData, sql.c_str())  这里有问题,sql为CString,就不应该加.c_str()吧。还有row为结果集吧?假设找到2条答案,那么如何从中取出一条呢?
      

  7.   

    MYSQL_RES *res3;
    MYSQL_ROW row3;
    CString sql = "SELECT question,answer FROM holophrase WHERE question like '%" + test_1 + "%'";
    mysql_query(&mysql, sql);
    res3 = mysql_store_result(&mysql);
    int num_row = mysql_num_rows(res3);
    row3 = mysql_fetch_row(res3);如果num_row>1,那么我怎样随机取出一条结果呢?
      

  8.   

    你查询的SQL语句加上order by rand() LIMIT 1 就可以了。不过如果数据多效率会很低SELECT question,answer FROM holophrase WHERE question like '%" + test_1 + "%' order by rand() LIMIT 1
      

  9.   

    是错了,我改一下
    if ( mysql_query( myData, LPCSTR(sql)))
    {
                      mysql_close( myData ) ;
                      return -1;
    }res = mysql_store_result( myData ) ;
    while( row = mysql_fetch_row( res ) )  //多条时用while
    {
        ........
    }mysql_free_result( res ) ;
    mysql_close( myData ) ;
    如果要随机取一条,算出一个小于rownum的随机数,在结果集中取相应的哪一条吧