int iRet = myCommand.ExecuteNonQuery();//iRet是受影响的行数
if(iRet == 0)
{
 //没有要删除的记录
}
else
{
//删除成功
}

解决方案 »

  1.   

    OleDbDataReader Rad = Cmd.ExecuteReader();
    if (!Rad.Read())
    {
     //没有记录
    }
      

  2.   

    我用是SQLSERVER 是不是应该把OleDbDataReader Rad = Cmd.ExecuteReader();
    改成SqlDataReader Rad = Cmd.ExecuteReader();ExecuteReader();这个方法是什么意思~
    ExecuteNonQuery();这个方法又是什么意思?
      

  3.   

    不用改,oledb也可以,
    ExecuteReader()一般用与查询等操作
    ExecuteNonQuery()一般用与更新和删除的操作,返回受影响的行数
      

  4.   

    <%@ Import Namespace="System.Data.SqlClient" %>
    <%@ Import Namespace="System.Data" %>  
    <head>
    <title>删除的例子</title>
    <Script Language="C#" Runat="Server">  
    void delete_Click(Object src,EventArgs e)
    {
    SqlCommand myCommand;
    string myDeleteQuery;
    string mySelectQuery;
    string myConnString=@"server=localhost;uid=sa;pwd= ;database=test ";
    SqlConnection myConnection = new SqlConnection(myConnString);
    myConnection.Open();
    mySelectQuery = "SELECT * from test";
    myCommand=new SqlCommand(mySelectQuery,myConnection);
    SqlDataReader reader=myCommand.ExecuteReader();
    if(Tel1.Text==""){
    Label1.Text="编号不能为空";
    }
    else if (!reader.Read())
    {
    Label1.Text="数据库没有信息!";
    reader.Close();
    }
    else
    {myDeleteQuery="delete from test where id = "+ Tel1.Text.Trim() +" " ;
    myCommand=new SqlCommand(myDeleteQuery,myConnection);
    myCommand.ExecuteNonQuery();
    Label1.Text="删除成功!";
    Tel1.Text="";
    reader.Close();
    }
    myConnection.Close();
    }
    </Script>
    </head>
    <body>
    <p>请输入要删除的学号:</p>
    <form runat="server">
    <asp:TextBox id="Tel1" size="20" runat="server"/>
    <br>
    <asp:Button id="delete" onClick=delete_Click runat="server" Text="删除"></asp:Button>
    <br>
    <asp:Label id="Label1" runat="server"/>
    </form>
    </body>
    </html>
    当我输入一个不存在的信息点“确定”错误提示:
    有打开的与此连接相关联的 DataReader,必须首先将它关闭。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 已有打开的与此连接相关联的 DataReader,必须首先将它关闭。源错误: 生成此未处理异常的源代码只能在调试模式中进行编译时显示。若要启用该功能,请执行以下步骤之一,然后请求 URL:1. 在生成错误的文件的顶部添加一个“Debug=true”指令。示例:  <%@ Page Language="C#" Debug="true" %>或者:2. 将以下节添加到应用程序的配置文件中:<configuration>
       <system.web>
           <compilation debug="true"/>
       </system.web>
    </configuration> 
      

  5.   

    修改后的程序:<%@ Import Namespace="System.Data.SqlClient" %>
    <%@ Import Namespace="System.Data" %>  
    <head>
    <title>删除的例子</title>
    <Script Language="C#" Runat="Server">  
    void delete_Click(Object src,EventArgs e)
    {
    SqlCommand myCommand;
    string myDeleteQuery;
    string mySelectQuery;
    string myConnString=@"server=localhost;uid=sa;pwd= ;database=test ";
    SqlConnection myConnection = new SqlConnection(myConnString);
    myConnection.Open();
    mySelectQuery = "SELECT * from test";
    myCommand=new SqlCommand(mySelectQuery,myConnection);
    SqlDataReader reader=myCommand.ExecuteReader();
    if(Tel1.Text==""){
    Label1.Text="编号不能为空";
    }
    else if (!reader.Read())
    {
    Label1.Text="数据库没有信息!";
    reader.Close();
    }
    else
    {
    reader.Close();
    myDeleteQuery="delete from test where id = "+ Tel1.Text.Trim() +" " ;
    myCommand=new SqlCommand(myDeleteQuery,myConnection);
    myCommand.ExecuteNonQuery();
    Label1.Text="删除成功!";
    Tel1.Text="";
    }
    myConnection.Close();
    }
    </Script>
    </head>
    <body>
    <p>请输入要删除的学号:</p>
    <form runat="server">
    <asp:TextBox id="Tel1" size="20" runat="server"/>
    <br>
    <asp:Button id="delete" onClick=delete_Click runat="server" Text="删除"></asp:Button>
    <br>
    <asp:Label id="Label1" runat="server"/>
    </form>
    </body>
    </html>
    当输入数据库中不存在的学号时不显示:数据库没有信息
    Label1.Text="数据库没有信息!";没有起做用
    当我输入数据库中存在的信息时显示数据删除成功!
    不知道是哪的原因~
      

  6.   

    我觉得最好的方式还是这样的,不过你用SqlDataReader 的代码看起来也没有问题,可以单步跟踪一下SqlCommand myCommand;
    string myDeleteQuery;
    string myConnString=@"server=localhost;uid=sa;pwd= ;database=test ";
    SqlConnection myConnection = new SqlConnection(myConnString);
    myConnection.Open();
    if(Tel1.Text==""){
    Label1.Text="编号不能为空";
    }
    else
    {
    myDeleteQuery="delete from test where id = '"+ Tel1.Text.Trim() +"'" ;
    myCommand=new SqlCommand(myDeleteQuery,myConnection);int i=0;
    i=myCommand.ExecuteNonQuery();if (i!=0)
    {
       Label1.Text="删除成功!";
       Tel1.Text="";
    }
    else
    {
      Tel1.Text="数据库没有信息";
    }
    }
      

  7.   

    知道了mySelectQuery = "SELECT * from test";
    myCommand=new SqlCommand(mySelectQuery,myConnection);
    SqlDataReader reader=myCommand.ExecuteReader();你的SqlDataReader 永远有数据的,除非test是空表,当然不行了,应该加同样的限制条件
      

  8.   

    你的输入不存在的学号,并不表示数据库没有数据信息。
    你用 mySelectQuery = "SELECT * from test";
    是指数据库没有信息,而你输入不存在的学号应该是不存在该记录而已。当学号不存在还是执行else内的删除部分,也能删除成功,只是影响行数为0行
    你将mySelectQuery = "SELECT * from test";
    改为:
    mySelectQuery = "SELECT * from test where id = "+ Tel1.Text.Trim() +" " ;
    就会执行Label1.Text="数据库没有信息!";