c#.net 连接数据库对数据库中的数据批量删除,循环语句哪里有错?
StringconnectionString="连接数据库";SqlConnectionsqlConnection=newSqlConnection(connection...
String connectionString ="连接数据库";
SqlConnection sqlConnection = new SqlConnection(connectionString);
string strDelete = "delete from 表 where Pile_num= '" + strFirstID + " '";
SqlCommand cmdDelete = new SqlCommand(strDelete, sqlConnection);
sqlConnection.Open();
cmdDelete.ExecuteNonQuery();
//我想做到一但Whileslabnum或Whileslaborder有一个不为0就跳出循环,不再进行删除工作,Whileslabnum或Whileslaborder为0定的那条数据也不要删
while (i < intRowsCount - 1)
{
Whileslabnum = dataGridView1.Rows[i].Cells[11].Value.ToString();
Whileslaborder= dataGridView1.Rows[i].Cells[12].Value.ToString();
if (Whileslabnum != "0" || Whileslaborder != "0")
{
MessageBox.Show("某些信息无法删除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
else
{
strWhileID = dataGridView1.Rows[i].Cells[0].Value.ToString();
strDelete = "delete from 表 where Pile_num= '" + strWhileID + " '";
cmdDelete = new SqlCommand(strDelete, sqlConnection);
cmdDelete.ExecuteNonQuery();
i = i + 1;
}
}
sqlConnection.Close();
GetData();
现在的问题是,如果第一条的Whileslabnum或Whileslaborder都为0,后面的即使有的不为0,到不为0的那条数据操作就停止了,那条数据也不会被删除。 但是如果第一条的Whileslabnum或Whileslaborder有不为0的,第一条仍会被删掉,肿么办?哪里错了?问题补充:
1.如果第一条的Whileslabnum或Whileslaborder都为0,操作正常或到有不为0的数据停止
2.如果第一条的Whileslabnum或Whileslaborder有不为0的,删除了第一条后操作停止
现在想解决2中的问题 展开
SqlConnection sqlConnection = new SqlConnection(connectionString);
string strDelete = "delete from 表 where Pile_num= '" + strFirstID + " '";
SqlCommand cmdDelete = new SqlCommand(strDelete, sqlConnection);
sqlConnection.Open();
cmdDelete.ExecuteNonQuery();
//我想做到一但Whileslabnum或Whileslaborder有一个不为0就跳出循环,不再进行删除工作,Whileslabnum或Whileslaborder为0定的那条数据也不要删
while (i < intRowsCount - 1)
{
Whileslabnum = dataGridView1.Rows[i].Cells[11].Value.ToString();
Whileslaborder= dataGridView1.Rows[i].Cells[12].Value.ToString();
if (Whileslabnum != "0" || Whileslaborder != "0")
{
MessageBox.Show("某些信息无法删除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
else
{
strWhileID = dataGridView1.Rows[i].Cells[0].Value.ToString();
strDelete = "delete from 表 where Pile_num= '" + strWhileID + " '";
cmdDelete = new SqlCommand(strDelete, sqlConnection);
cmdDelete.ExecuteNonQuery();
i = i + 1;
}
}
sqlConnection.Close();
GetData();
现在的问题是,如果第一条的Whileslabnum或Whileslaborder都为0,后面的即使有的不为0,到不为0的那条数据操作就停止了,那条数据也不会被删除。 但是如果第一条的Whileslabnum或Whileslaborder有不为0的,第一条仍会被删掉,肿么办?哪里错了?问题补充:
1.如果第一条的Whileslabnum或Whileslaborder都为0,操作正常或到有不为0的数据停止
2.如果第一条的Whileslabnum或Whileslaborder有不为0的,删除了第一条后操作停止
现在想解决2中的问题 展开
展开全部
很明显,用一条SQL语句即可解决你的循环问题。你这个dataGridView1.Rows[i].Cells[11].不觉得很可怕 ?需求发生变化,字段顺序发生变化,你得去改后台代码,得去更新DLL。
你的意思是否大概是这样
一张表:名为 table 下面是数据。
你想要做个删除。删除的条件比如是Pile_num=55的全部删除,而当Whileslaborder 或者
Whileslabnum 其中只要有一个字段等于0的时候就不再删除后面操作。
其实这个需求,完全一条SQL语句就能解决。下面写语句
DELETE TABLE WHERE Pile_num=55 AND ID<(SELECT TOP 1 (ID) FROM TABLE WHERE Pile_num=55 AND (Whileslaborder=0 or Whileslabnum=0))
这个语句还有个问题是,如果2个字段都没有等于0的数据,你在再top 1后面将 id判空下
isnull(id,....这里就替换成Pile_num=55的最大数据的ID) 这条语句就算完。直接执行,就OK了。
ID 字段1 Whileslaborder Pile_num Whileslabnum
1 xxx 0 55 0
2 xxx 0 55 1
3 xxx 1 66 1
你的意思是否大概是这样
一张表:名为 table 下面是数据。
你想要做个删除。删除的条件比如是Pile_num=55的全部删除,而当Whileslaborder 或者
Whileslabnum 其中只要有一个字段等于0的时候就不再删除后面操作。
其实这个需求,完全一条SQL语句就能解决。下面写语句
DELETE TABLE WHERE Pile_num=55 AND ID<(SELECT TOP 1 (ID) FROM TABLE WHERE Pile_num=55 AND (Whileslaborder=0 or Whileslabnum=0))
这个语句还有个问题是,如果2个字段都没有等于0的数据,你在再top 1后面将 id判空下
isnull(id,....这里就替换成Pile_num=55的最大数据的ID) 这条语句就算完。直接执行,就OK了。
ID 字段1 Whileslaborder Pile_num Whileslabnum
1 xxx 0 55 0
2 xxx 0 55 1
3 xxx 1 66 1
追问
我先选出符合要求的数据,显示在gatagridview中,选择的依据是pile_num在某一个范围内,pile_num每一条数据的值都不一样,所以pile_num就是您指的ID?然后我想对这些数据进行删除,可以删除的条件就是这条数据的Whileslabnum 和Whileslaborder的值必须都为0
您说的方法我还不太明白,能再指点下么?
2012-05-27
展开全部
你的语句 if (Whileslabnum != "0" || Whileslaborder != "0")本来就是只要Whileslabnum 和Whileslaborder 其中有一个不为0,就执行删除操作。还有你的逻辑写的有问题。你那样写本来就是只执行了一次删除后面的都不执行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询