日期:2014-05-18  浏览次数:20581 次

C#.NETdo while循环问题
C# code

string CardNumber="字符串"; 
SqlCommand sqlcom2 = new SqlCommand("select * from MB_CARD where CARD_NO='" + CardNumber + "'", sqlconn);
             int count = Convert.ToInt32(sqlcom2.ExecuteScalar());

             do
             {
              
             }
             while ();


为了保持CardNumber 的唯一性,在生成的字符串中用do while语句进行数据判断.
在查询出MB_CARD表中CARD_NO是否有CardNumber 的值
如果表中有则重新生成CardNumber 字符,如果没有则进行提交.

------解决方案--------------------
不知道你要干嘛
但如果你这么干,你的程序的性能就会非常差。
------解决方案--------------------

while (count>0)
{
生成新的字符串
SqlCommand sqlcom2 = new SqlCommand("select * from MB_CARD where CARD_NO='" + CardNumber + "'", sqlconn);
int count = Convert.ToInt32(sqlcom2.ExecuteScalar());

}

正如楼上所说效率不好
------解决方案--------------------
这样写你的程序性能上不怎么样

这样或许好点
C# code

string CardNumber="字符串"; 
SqlCommand sqlcom2 = new SqlCommand("select Count(*) from MB_CARD where CARD_NO='" + CardNumber + "'", sqlconn);
             int count = Convert.ToInt32(sqlcom2.ExecuteScalar());

if(count > 1)
{
    //重新生成CardNumber 字符的代码
}

------解决方案--------------------
用sql解决重复问题,插入时自动判断是否存在。
------解决方案--------------------
C# code

        string CardNumber = "字符串";
        bool isExistValue = true;

        do
        {
           SqlCommand sqlcom2 = new SqlCommand("select count(*) from MB_CARD where CARD_NO='" + CardNumber + "'", sqlconn);

            int count = Convert.ToInt32(sqlcom2.ExecuteScalar());
            if (count > 0)
            {
                // 重新生成
                CardNumber = "************";
            }
            else
            {
                isExistValue = false;
            }

        }
        while (isExistValue);

------解决方案--------------------
為啥不在CardNumber生成的時候,只要生成唯一的CardNumber,就不需要判斷了
你可以加上CardNumber表最后一個number的+1的方式生成CardNumber,就不會重復了