Wcf+Mysql 数据传参内存级 错误?

问题描述

一个奇怪的问题作业模式:不同的人,在不同的地方扫描货物Barcode(唯一)入库软件架构:Wcf做Webserver,InstanceContextMode.PerCall模式数据库:Mysql5.5参数传递:客户端获取strXml=ds.GetXml()的字符串,Server端StringReadersr=newStringReader(strXml);ds.ReadXml(sr);StringReadersr=newStringReader(oTagInfo.InputParams[0]);ds.ReadXml(sr);for(inti=0;i<ds.Tables[0].Rows.Count;i++)//ds.Tables[0].Rows.Count=1{stringPalletNo=ds.Tables[0].Rows[i]["托盘号"].ToString();stringSLCodeID=ds.Tables[0].Rows[i]["库位"].ToString();stringModuleToSL_ConditionID=ds.Tables[0].Rows[i]["卡关条件ID"].ToString();stringOpUserID=oTagInfo.UserID;//"Admin";//ds.Tables[0].Rows[i]["颜色"].ToString();stringStatus="0";//0----入库初始状态为;1-----已拼柜;-1------退库sql+="insertintowarehouse.modulebindingsl(PalletNo,SLCodeID,ModuleToSL_ConditionID,OpUserID,CreateDateTime,Status,Computer)values"+"('"+PalletNo+"','"+SLCodeID+"','"+ModuleToSL_ConditionID+"','"+OpUserID+"',now(),'"+Status+"','"+oTagInfo.ComputerName+"');";}DB.ExecuteNonquery(DB.MySqlconn,sql,refresult);sr.Close();

数据库有一个自增列,但是出现不同的人(工号不同,登入的客户端不是一个)在不同的地方(仓库不同),却出现同一个barcode在相邻的自增列,在同一时间点Insert到了数据库,出现3笔,不得其解

解决方案

解决方案二:
自己顶一下。
解决方案三:
有没有人知道啊
解决方案四:
stringPalletNo=ds.Tables[0].Rows[i]["托盘号"].ToString();

一样不一样你需要看这个获取的是什么
解决方案五:
引用3楼FoxDave的回复:

stringPalletNo=ds.Tables[0].Rows[i]["托盘号"].ToString();

一样不一样你需要看这个获取的是什么

扫一次就立即写入数据库,所以ds.Tables[0].Rows.Count=1,软件客户端每台电脑只能打开一个,登入工号,选择好库位,作业模式决定在一个ds里面不可能有两笔
解决方案六:
这种你还是客户端和服务端同时写日志对比吧就你贴出来的代码没任何参考意义
解决方案七:
引用5楼starfd的回复:

这种你还是客户端和服务端同时写日志对比吧就你贴出来的代码没任何参考意义

只有这样了。
解决方案八:
你这逻辑好像有问题的你的barcode是数据库读出来的,那么在同一时间不同的人读到的不都是一样的么?
解决方案九:
引用7楼rtdb的回复:

你这逻辑好像有问题的你的barcode是数据库读出来的,那么在同一时间不同的人读到的不都是一样的么?

barcode是实物扫描的,不同的人(工号不同),不同的客户端(每个pc只能运行一个),在不同的地点(仓库不同),按道理不可能刷到同一个barcode而且在同一时间点(途中时间一样,自增列相差1)
解决方案十:
应该是你的Table有问题吧?而table如果是从服务端读过来的,那么很有可能是服务端读取数据的时候出问题了。如果你服务端读取的是操作人员信息的话,那是不是查询语句写错导致多读了一个出来?然后客户端在扫描的时候又把barcode填充到每一行里了,才导致现在这种情况的
解决方案十一:
你可能一次性插入了两条以上的数据当然会有相同的时间咯
解决方案十二:

解决方案十三:
引用9楼qq_26456659的回复:

应该是你的Table有问题吧?而table如果是从服务端读过来的,那么很有可能是服务端读取数据的时候出问题了。如果你服务端读取的是操作人员信息的话,那是不是查询语句写错导致多读了一个出来?然后客户端在扫描的时候又把barcode填充到每一行里了,才导致现在这种情况的

table是客户端通过把字符串ds.GetXml()传给服务端的,包含barcode、仓库、工号,仓库是选择的,工号是登入客户端的账号,这两者需要同时改变的话需要退出客户端
解决方案十四:
引用11楼c136900141的回复:table是客户端通过把字符串ds.GetXml()传给服务端的,包含barcode、仓库、工号,仓库是选择的,工号是登入客户端的账号,这两者需要同时改变的话需要退出客户端,table只包含一条记录

时间: 2024-11-09 00:56:06

Wcf+Mysql 数据传参内存级 错误?的相关文章

exception-oracle数据库,数据传参时出现的问题,已解决,求原因

问题描述 oracle数据库,数据传参时出现的问题,已解决,求原因 public Address queryAddress(int addId){ Address add = new Address(); try{ Connection conn =super.getConn(); String sql ="select addressid ,addstreet from address where addressid=?"; PreparedStatement ps = conn.p

Mysql中避免“表已满错误”出现

表已满错误出现的方式有数种: ·你正在使用低于3.23版的MySQL服务器,而且"内存中"临时表超过了tmp_table_size字节.要想避免该问题,可使用"-O tmp_table_size=val"选项以便mysqld增加临时表的大小,或在发出有问题的查询之前,使用SQL选项SQL_BIG_TABLES. 也可以使用"--big-tables"选项启动mysqld.它与使用针对所有查询的SQL_BIG_TABLES完全相同. 自MySQL

jdbc-用eclipse做一个简单的注册模块,数据传不到数据库中

问题描述 用eclipse做一个简单的注册模块,数据传不到数据库中 用eclipse做一个简单的注册模块,输入用户名和密码,选择性别,按提交,将数据写如数据库,运行时出现的错误: HTTP Status 500 - javax.servlet.ServletException: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'UserName' cannot be null 有

有没有人会将gridview的数据传到数据库啊 哪位帮帮忙

问题描述 有没有人会将gridview的数据传到数据库啊哪位帮帮忙DataTablemydt=newDataTable();DataSetds=newDataSet();OleDbConnectionobjconn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\毕业设计zhangjie\2007级新生信息.xls;ExtendedProperties=Excel8.0;");objconn.Open

sql 函数-mysql创建函数一直提示语句错误

问题描述 mysql创建函数一直提示语句错误 我在数据库的部门表里存的树形结构,在已知子部门时向上查找所有父级部门,写的函数如下 CREATE FUNCTION queryAllDept(@currdeptid varchar(50)) returns varchar(200) BEGIN declare @allname varchar(200) DEFAULT ''; declare @tempname varchar(200) DEFAULT ''; declare @tempparid

MySQL · 源码分析 · 内存分配机制

前言 内存资源由操作系统管理,分配与回收操作可能会执行系统调用(以 malloc 算法为例,较大的内存空间分配接口是 mmap, 而较小的空间 free 之后并不归还给操作系统 ),频繁的系统调用必然会降低系统性能,但是可以最大限度的把使用完毕的内存让给其它进程使用,相反长时间占有内存资源可以减少系统调用次数,但是内存资源不足会导致操作系统频繁换页,降低服务器的整体性能. 数据库是使用内存的"大户",合理的内存分配机制就尤为重要,上一期月报介绍了 PostgreSQL 的内存上下文,本

java中三种常见内存溢出错误的处理方法(good)

相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识.jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域).Heap space(堆区域).Java Stacks(Java栈).其中永久保存区域主要存放Class

MySQL从MyISAM转换成InnoDB错误与常用解决办法_Mysql

原来自己用的是为了装的, 所以在设置database usage(如下图1)的时候按照discuz官方的建议,选的都是Non-Transactional Database Only(只支持MyISAM数据引擎的非事务数据库),用MyISAM数据库,还没涉及到需要InnoDB,因此打算直接不加载INNODB引擎.后来在做WordPress,一开始还不知道原来WordPress用的是InnoDB数据引擎,于是在原来的数据库里面就建了一个数据库,一开始也没发觉问题,安装,导入sql,都没问题,当时也没

将MySQL从MyISAM转换成InnoDB错误和解决办法_Mysql

后来在做WordPress,一开始还不知道原来WordPress用的是InnoDB数据引擎,于是在原来的数据库里面就建了一个数据库,一开始也没发觉问题,安装,导入sql,都没问题,当时也没多想.直到这几天因为又要装多一个WordPress,用phpmyadmin访问数据库多一点,问题来了.老是一访问WordPress的数据库,就弹出错误提示"Mysqld-nt.exe应用程序错误:"0x005346c4"指令引用的"0x00786000"内存,该内存不能为