我在vs2005 单步调试 存储过程 数据库结果有更新
在C#程序里直接执行调用存储过程 数据库结构没有更新
一直不知道是啥问题C#代码 private bool CheckConsumeRecords()
{
bool bCheckResult = true;
try
{
int NormalRecordCnt = 0, ErrorRecordCnt = 0;
SqlCommand cmd = conn.CreateCommand();
cmd.Transaction = tran;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from TodayConsumeRecords";
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dsRecords = new DataSet();
sda.Fill(dsRecords, "TodayConsumeRecords");
DataTable dtRecords = dsRecords.Tables["TodayConsumeRecords"];
int iRcdId = 0;
string strTac = "";
string str_space = " ";
string strCheckValue = "";
pbBalanceProcess.Minimum = 0;
pbBalanceProcess.Maximum = dtRecords.Rows.Count;
pbBalanceProcess.Value = 0;
foreach (DataRow drRcd in dtRecords.Rows)
{
iRcdId = Convert.ToInt32(drRcd["RecordId"]);
strTac = TacCalculator.CalculateConsumeTAC(drRcd);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "CheckConsumeRecords";
cmd.Parameters.AddWithValue("CheckRecord", iRcdId);
cmd.Parameters.AddWithValue("CheckTac", strTac);
cmd.Parameters.Add("CheckValue", SqlDbType.NVarChar, 10).Direction = ParameterDirection.Output;
int result = cmd.ExecuteNonQuery();
strCheckValue = Convert.ToString(cmd.Parameters["CheckValue"].Value);
if (strCheckValue == "OK")
{
NormalRecordCnt++;
}
else
{
ErrorRecordCnt++;
}
cmd.Parameters.Clear();
pbBalanceProcess.PerformStep();
}
//报告消费数据验证完成
lbBalanceProcess.Items.Add("消费数据验证完成");
lbBalanceProcess.Items.Add("正确消费记录" + NormalRecordCnt + "条,错误消费记录" + ErrorRecordCnt + "条");
bCheckResult = true;
}
catch (Exception err)
{
SystemLog.WriteSystemLog(err.Message);
tran.Rollback();
bCheckResult = false;
}
return bCheckResult;
}
存储过程--消费数据验证存储过程
IF OBJECT_ID ( 'CheckConsumeRecords', 'P' ) IS NOT NULL
DROP PROCEDURE CheckConsumeRecords
GO
CREATE procedure [dbo].[CheckConsumeRecords]
@CheckRecord int,
@CheckTac nvarchar(8),
@CheckValue nvarchar(10) output
as
declare @recordtype nvarchar(10),@flag bit,@cardno nvarchar(10),@cardtype nvarchar(10)
declare @sysdate datetime,@trandate datetime,@collectdate datetime,@prevtrandate datetime
declare @recordid int,@recordtac nvarchar(8),@tranmoney int,@routeprice int,@prevrouteprice int,@prevtranmoney int
declare @hasMatch bit,@afbalance int,@bfbalance int
declare @TranDriver nvarchar(10)
--验证过程
--验证消费记录是否为正常消费记录
select @recordtype = RecordType from TodayConsumeRecords where RecordId = @CheckRecord
if @recordtype <> '001' and @recordtype <> '002'
begin
if @recordtype = '003' or @recordtype = '004'
begin
update TodayConsumeRecords set CheckValue = 0,CheckError='001' where RecordId = @CheckRecord
set @CheckValue = 'ERR001'
Return
end
if @recordtype = '005' or @recordtype = '006'
begin
update TodayConsumeRecords set CheckValue = 0,CheckError='002' where RecordId = @CheckRecord
set @CheckValue = 'ERR002'
Return
end
end
set @CheckValue = 'OK'
GO
在C#程序里直接执行调用存储过程 数据库结构没有更新
一直不知道是啥问题C#代码 private bool CheckConsumeRecords()
{
bool bCheckResult = true;
try
{
int NormalRecordCnt = 0, ErrorRecordCnt = 0;
SqlCommand cmd = conn.CreateCommand();
cmd.Transaction = tran;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from TodayConsumeRecords";
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dsRecords = new DataSet();
sda.Fill(dsRecords, "TodayConsumeRecords");
DataTable dtRecords = dsRecords.Tables["TodayConsumeRecords"];
int iRcdId = 0;
string strTac = "";
string str_space = " ";
string strCheckValue = "";
pbBalanceProcess.Minimum = 0;
pbBalanceProcess.Maximum = dtRecords.Rows.Count;
pbBalanceProcess.Value = 0;
foreach (DataRow drRcd in dtRecords.Rows)
{
iRcdId = Convert.ToInt32(drRcd["RecordId"]);
strTac = TacCalculator.CalculateConsumeTAC(drRcd);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "CheckConsumeRecords";
cmd.Parameters.AddWithValue("CheckRecord", iRcdId);
cmd.Parameters.AddWithValue("CheckTac", strTac);
cmd.Parameters.Add("CheckValue", SqlDbType.NVarChar, 10).Direction = ParameterDirection.Output;
int result = cmd.ExecuteNonQuery();
strCheckValue = Convert.ToString(cmd.Parameters["CheckValue"].Value);
if (strCheckValue == "OK")
{
NormalRecordCnt++;
}
else
{
ErrorRecordCnt++;
}
cmd.Parameters.Clear();
pbBalanceProcess.PerformStep();
}
//报告消费数据验证完成
lbBalanceProcess.Items.Add("消费数据验证完成");
lbBalanceProcess.Items.Add("正确消费记录" + NormalRecordCnt + "条,错误消费记录" + ErrorRecordCnt + "条");
bCheckResult = true;
}
catch (Exception err)
{
SystemLog.WriteSystemLog(err.Message);
tran.Rollback();
bCheckResult = false;
}
return bCheckResult;
}
存储过程--消费数据验证存储过程
IF OBJECT_ID ( 'CheckConsumeRecords', 'P' ) IS NOT NULL
DROP PROCEDURE CheckConsumeRecords
GO
CREATE procedure [dbo].[CheckConsumeRecords]
@CheckRecord int,
@CheckTac nvarchar(8),
@CheckValue nvarchar(10) output
as
declare @recordtype nvarchar(10),@flag bit,@cardno nvarchar(10),@cardtype nvarchar(10)
declare @sysdate datetime,@trandate datetime,@collectdate datetime,@prevtrandate datetime
declare @recordid int,@recordtac nvarchar(8),@tranmoney int,@routeprice int,@prevrouteprice int,@prevtranmoney int
declare @hasMatch bit,@afbalance int,@bfbalance int
declare @TranDriver nvarchar(10)
--验证过程
--验证消费记录是否为正常消费记录
select @recordtype = RecordType from TodayConsumeRecords where RecordId = @CheckRecord
if @recordtype <> '001' and @recordtype <> '002'
begin
if @recordtype = '003' or @recordtype = '004'
begin
update TodayConsumeRecords set CheckValue = 0,CheckError='001' where RecordId = @CheckRecord
set @CheckValue = 'ERR001'
Return
end
if @recordtype = '005' or @recordtype = '006'
begin
update TodayConsumeRecords set CheckValue = 0,CheckError='002' where RecordId = @CheckRecord
set @CheckValue = 'ERR002'
Return
end
end
set @CheckValue = 'OK'
GO
update,delete,insert都要commit
--验证交易卡是否为非法卡
if not exists(select * from EmployeeCards where CardSeqNo = (select TranCard from TodayConsumeRecords where RecordId = @CheckRecord))
begin
--处理非法卡,将非法卡列入黑名单,并写入非法卡发现记录表
select @cardtype = CardType from TodayConsumeRecords where RecordId = @CheckRecord
begin transaction IllegalCard
update TodayConsumeRecords set CheckValue = 0,CheckError = '003' where RecordId = @CheckRecord
select @cardno = TranCard,@cardtype = CardType from TodayConsumeRecords where RecordId = @CheckRecord
insert into IllegalCardRecords(IllegalCardNo,IllegalCardType,RecordDate) values(@cardno,@cardtype,getdate())
commit transaction IllegalCard
set @CheckValue = 'ERR003'
Return
end