fetch-mysql_real_query返回值是1,一直删除失败

问题描述

mysql_real_query返回值是1,一直删除失败
        str.Format(_T("%s"),row[0]);
        row=mysql_fetch_row(result);
        while(ln[i]!=str)
        {
            CString strSQL;
            MYSQL_RES *result;
            strSQL.Format("delete from mytable where name='%s'",str);
            if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
            {
                AfxMessageBox("删除失败");
            }
            str.Format(_T("%s"),row[0]);
            row=mysql_fetch_row(result);
        }

解决方案

要看具体的错误信息,删除一般发生的错误有
没有找到数据、数据存在关联,先要删除级联的数据才能删除它

解决方案二:

SQL语句没有错误,在MYSQL中执行命令可以执行

解决方案三:

参考Mysql : mysql_real_query 返回1

要是以后大家有人遇到这个问题又无解的话,参考本贴的错误情况,我终于发现问题在哪了:
如果前一次调用了 mysql_use_result (使用结果集的都算),而返回时没有调用 mysql_free_result( ); 那么在下一次调用mysql_real_query的时候就会出错,总而言之,使用了 MYSQL_RES *就得释放,否则就会出错,错误代码此时是1(其他错误返回值也有为1的时候,另当别论)

在上面你贴出来的你的代码
第二行row=mysql_fetch_row(result);,这里有了result,但是在第六行MYSQL_RES *result;又定义了result。
第一行str.Format(_T("%s"),row[0]);,倒数第二行也是str.Format(_T("%s"),row[0]);
第二行有row=mysql_fetch_row(result);,最后一行是row=mysql_fetch_row(result);
你有没有觉得有点乱,理一下你的思路和逻辑,存储不同的数据定义不同的变量。看看能不能解决问题。

解决方案四:

查看一下具体错误,是不是你调用sql语句的时候,参数有问题,导致最后的sql语句并不是你想象的结果

解决方案五:

改成这个strSQL.Format("delete from mytable where name='%s'",str);

时间: 2024-10-03 17:38:57

fetch-mysql_real_query返回值是1,一直删除失败的相关文章

删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。_javascript技巧

今日在bluediea看到淘宝在线招聘,相信淘宝的技术还是很牛的,于是赶紧打开看看题目并试着做做. 到了第三题时卡了偶老半天,并不是做不出来,感觉有很简便的方法但自己就是一时想不出来,不过费了九牛二虎之力终于完成本题,给出了一个另自己还比较满意的答案,欢迎各位朋友指点! 题目如下: 请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组. [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 复制代码 代码如下:

整理sqlserver 级联更新和删除 c#调用存储过程返回值

整理一下级联更新和删除 c#调用返回值 use master go IF exists(select 1 from sysdatabases where name='temp') BEGIN DROP DATABASE temp END create database temp go use temp go --drop table ProductInfo create table ProductInfo ( ProductId int primary key , ProductName var

字符串-一个很基础的返回值问题

问题描述 一个很基础的返回值问题 想要打印字符串数组,去掉中间的空格和Tab,并且删除全为空的行,哪里有错?谢谢. #include #define MAXLINE 1000 int getline(char line[], int maxline); int copy(char to[],char from[]); int main(){ int len; int max; char line[MAXLINE]; max=0; while ((len=getline(line,MAXLINE)

asp.net操作javascript:confirm返回值的两种方式

 在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. (一)asp.net用StringBuilder控制后台操作javascript:confirm返回值,此方法比较烦琐 1.后台启动事件   1 2 3 4 5 6 7 StringBuilder sb = new StringBuilder(); sb.Append("<script lan

(一二四)给类对象赋值、以及类对象的返回值

于直接给对象赋值: 之前学过,如何给对象在初始化时进行赋值. 对于C++11来说,初始化方式有三种: ① man c = man{ "cc",1 }; ② man d = { "dd",1 }; ③ man f{ "ff",1 };   假如有一类M,他有两个私有成员a和b(int类型). 于是新建一对象M q; 对象q使用默认构造函数(假如都赋值为0,这个不重要): 现在,我们想给对象q的第一个私有成员赋值,该怎么办? 这章刚学过运算符重载,难

2010-SCOPE_IDENTITY() AS INT;返回值的问题,求请前辈们教诲。感激不尽,小子拜谢。

问题描述 SCOPE_IDENTITY() AS INT:返回值的问题,求请前辈们教诲.感激不尽,小子拜谢. 比如说我里面有三行数据我添加商品如图 添加成功之后 到VS调试..如图点击右键添加商品菜单之后 调试第一次添加成功(添加了几项) 但是问题来了随后删除不了添加的商品找不到tag属性保存的Id.如图 我试着再次调试发现可以删除了(删除完). 让后我用f5调试发现其实在添加ID是保存了的. 最大问题来了.在进行之前的操作之后.再次调试添加就会发生我最为疑惑事. 通过select CAST(S

图像配准-function m=func(~,~);提示可能为设置函数返回值“m”,怎么修改,新手求指点

问题描述 function m=func(~,~):提示可能为设置函数返回值"m",怎么修改,新手求指点 function m=func(~,~) im1=imread('E:im2.jpg'); im2=imread('E:im1.jpg'); im1= rgb2gray(im1); im2= rgb2gray(im2);%本程序处理的是灰度图像 im1 = im2double(im1); im2 = im2double(im2); im1_size=size(im1); im1_l

SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法

1.SpringMVC中通过@ResponseBody返回对象,作为JQuery中的ajax返回值 package com.kuman.cartoon.controller;   import java.util.Map;   import javax.servlet.http.HttpServletRequest;   import org.apache.commons.io.filefilter.FalseFileFilter; import org.slf4j.Logger; import

Java执行sql语句并获取指定返回值

当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1.先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2.使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select max(id) 获取主键值: 3.对于Oracle,使用 sequence 获取值. 对于以上3种方法都无法绝对保证在高并发情况下的操作的原子性. 现记录以下几种获取数据库主键值方法: 1.数据库原生支持的sql