异常错误表示不存在任何数据。编码可能出错

时间:2017-10-05 02:57:26

标签: sql-server datareader

我有两个数据库。 我正在尝试在test2中获取最新的ID并转发该ID以进行测试

    SqlCommand readcmd = new SqlCommand("select MAX(PID) from test2;");
    SqlDataReader rdr = cmd.ExecuteReader();
    rdr.Read();
    int pid = (int)rdr["PID"];
    cmd.CommandText = "insert into test (PID) values ('"+ rdr.GetInt32(0) +"')";

应该有数据,因为我检查了我的表数据,并且有很多我故意填写的记录。什么似乎是错的?

1 个答案:

答案 0 :(得分:0)

SqlDataReader是一个前向读取器。从SqlDataReader返回的数据流中读取的典型方法是使用while循环遍历每一行。

SqlCommand readcmd = new SqlCommand("select MAX(PID) from test2;");
SqlDataReader rdr = cmd.ExecuteReader();
int pid = 0;
if(rdr.HasRows)
{  
        while (rdr.Read())
        {
           pid = rdr.GetInt32(0);
        }
}
cmd.CommandText = "insert into test (PID) values (@pid)";
cmd.Parameters.AddWithValue("@pid", pid);

此外,通常,您不应将变量直接连接到命令文本中。请改用参数来防止SQL注入攻击。