protected void submit_Click(object sender, EventArgs e)
{
string code;
code = ConvertToString(thisTextBox1Text);
SystemTextRegularExpressionsRegex regex = new SystemTextRegularExpressionsRegex(@"'", SystemTextRegularExpressionsRegexOptionsIgnoreCase);
code = regexReplace(code, " ");
SqlConnection conn = new SqlConnection("Data Source=;Initial Catalog=CodeRead;uid=sa;pwd= ");
connOpen();
string sql = "select Count(1) from code where numble=('" + code + "')";
SqlCommand cmd1 = new SqlCommand(sql, conn);
int count = (int)cmd1ExecuteScalar();
if (count > 1)
ResponseWrite("数据重复!");
else
{
SqlCommand cmd = new SqlCommand("insert into code(numble) values('" + code + "')", conn);
cmdExecuteNonQuery();
if (cmdExecuteNonQuery() > 0)
ResponseWrite(code + "数据导入成功!");
else
ResponseWrite("数据导入错误!");
connClose();
}
您好:
只要在该列设置唯一约束即可。
alter table 表名add constraint 约束名 unique (列名)
可按照上面的语句来设置唯一约束。。。
在不可重复读里进行重复读 *** 作,不一定有问题,这个由业务决定,实际上很多业务场景重复读不一样的数据,(后一次是最新数据)是对的,反而重复读取的数据一样的话是错的。
当设置事务隔离级别为不可重复读时,在事务代码里是可以重复读 *** 作的,这个看上去很矛盾, 就像十字路口竖立了一个牌子,上面写着“不可闯红灯”,但是其实你硬要闯也是可以的,那个提示只是告诉你有可能出现危险!这里一样的道理,在“不可重复读”等级下进行了重复读其实也是可以的,mysql本身不会因为你重复读强制报错或终止,但是可能会因为重复读导致问题,也有可能没有问题,并不是说一定会出错,有些场景,两次读不一样,第二次获取到的是最新的数据,确实可能是好的,反而有些场景重复读数据保持一样(明明后边数据被别的事务更新了)可能出错。
至于哪些场景这样会有问题,我觉得应该是那种生成瞬时数据的场景,比如今天12:00:00网站访问量是1000,有个事务正要拿这个时间点的1000处理,然后返回生成一个报表,这个时候,另一个事务把这个1000改成了2000,但这个2000是12:00:01的访问量,这种场景,重复读就有问题,因为不精确了。但有的场景,比如只要求生成最新的报表,不要求时间,越新越好,这里重复读又没问题,还有类似余额处理,如果是像楼上说的刷卡场景,那种update 两次读取不一样(后边是最新数据)我觉得才是对的,所以需要根据业务场景,有了正确的隔离等级还要配合适当的代码才能决定是对还是错 。
1、数据库设计问题:批次属性是根据特定规则生成的,如生产日期、生产批次号等。数据库中没有对这些属性进行唯一性约束或索引,会导致重复插入相同记录。
2、逻辑错误:由于程序代码实现不严密,没有考虑到特定情况下的数据校验和异常处理,造成了重复插入相同记录的问题。
3、数据输入错误:当 *** 作员不小心将相似但不完全相同的批次属性插入到数据库中时,也会发生出现重复记录的情况。
以上就是关于C#插入数据库,不能重复!!全部的内容,包括:C#插入数据库,不能重复!!、怎么把数据库的某列值设置成不可以重复、数据库中的不可重复读问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)