相关疑难解决方法(0)

当浏览器重新加载/返回时,如何防止数据库再次被写入?

我正在整理一个写入数据库的小型Web应用程序(Perl CGI和MySQL).CGI脚本从表单中获取一些信息并将其写入数据库.但是,我注意到,如果我在网络浏览器上点击"重新加载"或"返回",它会再次将数据写入数据库.我不想要这个.

在这种情况下,防止重写数据的最佳方法是什么?

database perl cgi idempotent

5
推荐指数
2
解决办法
2067
查看次数

使用if存在

我在刷新时插入重复项有问题.我们这里的团队决定在sql中使用'if exists'是阻止重复插入的最佳方法.但是,如果参数设置为null怎么办?

string cmdText = " if (not exists(select * from table where field1 = @field1 and field2 = @field2 and field3 = @field3)) Insert into table(field1,field2,field3) Values(@field1,@field2,@field3)";

if (txtfield1.text != "")
    cmd.Parameters.Add(new SqlParameter("@field1", txtfield1.text));
else
    cmd.Parameters.Add(new SqlParameter("@ field1", DBNull.Value));

    cmd.Parameters.Add(new SqlParameter("@field2", txtfield2));
    cmd.Parameters.Add(new SqlParameter("@field3", txtfield3));
Run Code Online (Sandbox Code Playgroud)

当field1中存在空值时,这不起作用.

c# sql-server asp.net visual-studio

0
推荐指数
1
解决办法
410
查看次数

标签 统计

asp.net ×1

c# ×1

cgi ×1

database ×1

idempotent ×1

perl ×1

sql-server ×1

visual-studio ×1