Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 雷利街区。我没有足够的能力处理块到块的通信…@kingyau我不主张处理任何错误。更改功能以使用生成的随机字符串对表的主键执行SELECT查询。如果它不存在,请进行插入。@kingyau-为了清晰起见,我添加了一段psuedo代码示例。哇,我还以为你说的是_C#_Sql_Sql Server_Sql Insert - Fatal编程技术网

C# 雷利街区。我没有足够的能力处理块到块的通信…@kingyau我不主张处理任何错误。更改功能以使用生成的随机字符串对表的主键执行SELECT查询。如果它不存在,请进行插入。@kingyau-为了清晰起见,我添加了一段psuedo代码示例。哇,我还以为你说的是

C# 雷利街区。我没有足够的能力处理块到块的通信…@kingyau我不主张处理任何错误。更改功能以使用生成的随机字符串对表的主键执行SELECT查询。如果它不存在,请进行插入。@kingyau-为了清晰起见,我添加了一段psuedo代码示例。哇,我还以为你说的是,c#,sql,sql-server,sql-insert,C#,Sql,Sql Server,Sql Insert,雷利街区。我没有足够的能力处理块到块的通信…@kingyau我不主张处理任何错误。更改功能以使用生成的随机字符串对表的主键执行SELECT查询。如果它不存在,请进行插入。@kingyau-为了清晰起见,我添加了一段psuedo代码示例。哇,我还以为你说的是do{INSERT}while(success)。。你的比我想象的要好。非常感谢:)@kingyau-我添加了更多的评论,因为这种检查和插入方法性能不高,本质上是糟糕的数据库设计。希望它们能为您带来正确解决方案的清晰性,而不是“适合我”的解决方


雷利街区。我没有足够的能力处理块到块的通信…@kingyau我不主张处理任何错误。更改功能以使用生成的随机字符串对表的主键执行SELECT查询。如果它不存在,请进行插入。@kingyau-为了清晰起见,我添加了一段psuedo代码示例。哇,我还以为你说的是
do{INSERT}while(success)
。。你的比我想象的要好。非常感谢:)@kingyau-我添加了更多的评论,因为这种检查和插入方法性能不高,本质上是糟糕的数据库设计。希望它们能为您带来正确解决方案的清晰性,而不是“适合我”的解决方案。如果此解决方案已回答您的问题,请将其标记为已接受并进行投票。您建议使用什么循环?我只知道如何使用if-else和for-loop.“在c#中执行insert或任何sql语句都是不好的,因为它易于sql注入”,这既有误导性,也有错误。当您不参数化查询时,就会发生SQL注入。由于OP在代码示例中正确地执行了此操作,因此您的语句不起作用。另一方面,C#中的SQL既不坏也不好,它是处理解决方案的一种单独方式。+1,但您需要将整个操作包装在事务中,并将事务隔离级别设置为可序列化。肯定需要事务。我认为带有tablockx和holdlock提示的select也可以工作。基本上,read和delete都需要阻止其他读卡器。编辑以将其与此合并,请确保您偶尔重新填充池,以确保它永远不会用完(假设您没有预先填充所有可能的组合)。此重新填充作业将遇到与原始问题相同的问题,即查找唯一未使用的值,但至少它将在单独的过程中,而不是每次执行应用程序事务时。
try
            {
                SqlConnection con = new SqlConnection(ConnectionString);
                con.Open();
                    var key = RandomString(6);
                    SqlCommand insertCommand = new SqlCommand("INSERT INTO tableName(d1, d2, d3) VALUES (@0, @1, @2)", con);

                    insertCommand.Parameters.Add(new SqlParameter("0", key));
                    insertCommand.Parameters.Add(new SqlParameter("1", "values"));
                    insertCommand.Parameters.Add(new SqlParameter("2", DateTime.Now));
                   var rowCount = insertCommand.ExecuteNonQuery();


                con.Close();
                if (rowCount < 1)
                {
                    label.Text = "OMG it is Fail :(";
                    return false;
                }
                else
                {
                    label.Text = "HEY ~~~ inserted";
                    return true;
                }


            }
            catch (Exception ex)
            {
                label.Text = ex.Message;
                return false;
            }
try
{
    SqlConnection con = new SqlConnection(ConnectionString);
    con.Open();
    int count = 1;
    string key = string.Empty;

    while (count > 0)
    {
        key = RandomString(6);
        SqlCommand selectCommand = new SqlCommand("SELECT COUNT(*) FROM tableName WHERE d1 = @0", con);
        selectCommand.Parameters.Add(new SqlParameter("0", key));
        count = (int)selectCommand.ExecuteScalar();
    }

    SqlCommand insertCommand = new SqlCommand("INSERT INTO tableName(d1, d2, d3) VALUES (@0, @1, @2)", con);

    insertCommand.Parameters.Add(new SqlParameter("0", key));
    insertCommand.Parameters.Add(new SqlParameter("1", "values"));
    insertCommand.Parameters.Add(new SqlParameter("2", DateTime.Now));
    var rowCount = insertCommand.ExecuteNonQuery();


    con.Close();
    if (rowCount < 1)
    {
        label.Text = "OMG it is Fail :(";
        return false;
    }
    else
    {
        label.Text = "HEY ~~~ inserted";
        return true;
    }
}
catch (Exception ex)
{
    label.Text = ex.Message;
    return false;
}