社区
C#
帖子详情
打印和数据库操作同步进行??
xiaowangtian1117
2006-07-13 03:25:45
打印和数据库插入操作同步进行,当一个事情有误后另一个事情回滚。
在一个应用程序中,首先向数据库中插入一笔数据,然后把此数据打印出来,但是如果在打印时出现问题,则把原来操作回滚,也就是删除刚才插入的数据。
...全文
290
23
打赏
收藏
打印和数据库操作同步进行??
打印和数据库插入操作同步进行,当一个事情有误后另一个事情回滚。 在一个应用程序中,首先向数据库中插入一笔数据,然后把此数据打印出来,但是如果在打印时出现问题,则把原来操作回滚,也就是删除刚才插入的数据。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Knight94
2006-07-14
打赏
举报
回复
to 我在打印时用打印机厂家提供的动态链接库,他们提供打印是否成功!
如果这样的话,大致流程如下:
1、通过connection创建transaction,把它付给command,并设置command的timeout足够大;
2、通过command执行插入操作,但不提交transaction;
3、打印当前的插入数据;
4、通过打印返回值来判断是否需要提交transaction。
xiaowangtian1117
2006-07-14
打赏
举报
回复
errorMessage=null;
SqlTransaction trans=null;
SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
try
{
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn;
cmd.CommandText="Insert_AutoSell";
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@AUTO_VINCODE",SqlDbType.NVarChar);
cmd.Parameters.Add("@AUTO_STYLE",SqlDbType.Int);
cmd.Parameters.Add("@AUTO_YEAR",SqlDbType.Int);
cmd.Parameters["@AUTO_VINCODE"].Value = VINM_Biz.AutoVin;
cmd.Parameters["@AUTO_STYLE"].Value = VINM_Biz.AutoStyleID;
cmd.Parameters["@AUTO_YEAR"].Value = VINM_Biz.AutoYear;
conn.Open();
trans=conn.BeginTransaction();
cmd.Transaction=trans;
cmd.ExecuteNonQuery();
打印模块。。。。
trans.Commit();
conn.Close();
return true;
}
catch(Exception se)
{
errorMessage=se.Message;
trans.Rollback();
conn.Close();
return false;
}
以上是我写的代码,请高手帮忙看一些有什么问题?自己测试基本成功!
hertcloud
2006-07-14
打赏
举报
回复
这个 根本不现实
比如你 已经打了 一行
我是一个中国人
而数据库这行再你刚打印完后 被 更新为 “我是一个老外”
你难道能叫打印机 给你把 前面的一行涂白了
重新打过。。。。。。。。。。。。。
xiaowangtian1117
2006-07-14
打赏
举报
回复
我在打印时用打印机厂家提供的动态链接库,他们提供打印是否成功!
Knight94
2006-07-14
打赏
举报
回复
to 在对数据库操作时用事务可不可以实现我的要求?
可以
Knight94
2006-07-14
打赏
举报
回复
to 在一个应用程序中,首先向数据库中插入一笔数据,然后把此数据打印出来,但是如果在打印时出现问题,则把原来操作回滚,也就是删除刚才插入的数据。
问题的难点在于,如何判断打印是否出现问题,例如使用网络打印机的时候,你无法判断打印错误。
除此外,其他都可以完成。
xiaowangtian1117
2006-07-14
打赏
举报
回复
谢谢!
Knight94
2006-07-14
打赏
举报
回复
没问题
xiaowangtian1117
2006-07-14
打赏
举报
回复
其他的应该没有问题了吧?谢谢指正!
Knight94
2006-07-14
打赏
举报
回复
to cmd.CommandTimeout=0;
我一般习惯为
cmd.CommandTimeout = 3600;
xiaowangtian1117
2006-07-14
打赏
举报
回复
值 0 指示无限制,在 CommandTimeout 中应避免值 0,否则会无限期地等待执行命令。
如果下面代码中加入cmd.CommandTimeout=0;,应该可以了吧?谢谢指正!
errorMessage=null;
SqlTransaction trans=null;
SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
try
{
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn;
cmd.CommandTimeout=0;
cmd.CommandText="Insert_AutoSell";
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@AUTO_VINCODE",SqlDbType.NVarChar);
cmd.Parameters.Add("@AUTO_STYLE",SqlDbType.Int);
cmd.Parameters.Add("@AUTO_YEAR",SqlDbType.Int);
cmd.Parameters["@AUTO_VINCODE"].Value = VINM_Biz.AutoVin;
cmd.Parameters["@AUTO_STYLE"].Value = VINM_Biz.AutoStyleID;
cmd.Parameters["@AUTO_YEAR"].Value = VINM_Biz.AutoYear;
conn.Open();
trans=conn.BeginTransaction();
cmd.Transaction=trans;
cmd.ExecuteNonQuery();
打印模块。。。。
trans.Commit();
conn.Close();
return true;
}
catch(Exception se)
{
errorMessage=se.Message;
trans.Rollback();
conn.Close();
return false;
}
myminimouse
2006-07-13
打赏
举报
回复
up
kssys
2006-07-13
打赏
举报
回复
使用顽石宫主的方法是可以实现的。
把他的代码放入到Try Catch 块里面即可。
xiaowangtian1117
2006-07-13
打赏
举报
回复
有没有人知道用“phommy(顽石宫主) ”的办法:在对数据库操作时用事务可不可以实现我的要求?
xiaowangtian1117
2006-07-13
打赏
举报
回复
如果在打印后插入,当插入有问题时是不能撤销打印的!
kssys
2006-07-13
打赏
举报
回复
按照实际的逻辑,也是这样处理的。只有当一切都OK的情况下,才去书写记录
kssys
2006-07-13
打赏
举报
回复
你可以在打印成功后再插入
phommy
2006-07-13
打赏
举报
回复
前边加上 On Error Resume Next~
gConn=>conn
phommy
2006-07-13
打赏
举报
回复
conn.BeginTrans
gConn.Execute "insert into table (key,value) values (" & key & "," & value & ")"
If Err Then conn.RollbackTrans: Exit Sub
Set Printer = Printers(0)
Printer.Print "key=" & key
Printer.Print "value=" & value
Printer.EndDoc
If Err Then conn.RollbackTrans Else conn.CommitTrans
xiaowangtian1117
2006-07-13
打赏
举报
回复
我想到的是先插入记录并记录插入数据的ID,用try catch来判断打印是否异常,如果异常用数据ID号删掉记录。
加载更多回复(3)
Access
数据库
有什么用?该
数据库
有什么功能?
虽然选择查询允许用户查看、复制和
打印
检索到的数据,但
操作
查询可以使用数据执行任务。该
数据库
提供几种类型的查询,包括:选择查询、删除查询、更新查询、进行表查询、追加查询以及交叉表查询。以上介绍的是该...
数据库
数据定期同步实现
需求背景:有一个业务方需要定期跟
数据库
进行数据同步,就是需要定期往
数据库
中同步部分数据,而这些数据并不能被当前系统直接使用,需要做一些处理同步到系统所使用的
数据库
中,处理比较复杂,没办法进行实时的同步...
怎样实现redis缓存与
数据库
同步?Redis如何实现分布式阻塞队列?
缓存同步其实就是当缓存的信息发生变化,也就是对后台对缓存的数据进行增、删、改
操作
后,
数据库
中的数据发生了变化同时要把缓存中的数据对应删除即可。分布式锁本质上要实现的目标就是在Redis里面占一个“茅坑”,...
Qt/C++
数据库
应用15-通用
数据库
同步
数据库
同步的主要功能是将本地的
数据库
记录同步到远程的
数据库
,其中
数据库
类型不限,比如本地是sqlite
数据库
,远程可以是mysql
数据库
,本地是mysql
数据库
,远程也可以是postgresql
数据库
,只要
数据库
设置的时候设定...
不同
数据库
进行同步和增量数据(SQL server 与MySQL
数据库
为例)
历史数据入库我使用的python写的,首先定义两个
数据库
的信息。定义入库历史数据函数。
C#
110,571
社区成员
642,565
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章