Why is “while (rs.next())” necessary here?

前端 未结 5 1355
夕颜
夕颜 2021-01-07 16:08

I want to select the maximum line number from my database \"Logs\" and store it in a variable m.

Here\'s my code:

ResultSet rs          


        
5条回答
  •  野趣味
    野趣味 (楼主)
    2021-01-07 16:47

    There are different types of Executing the Commands. Cursors are used to read the data from your executed queries. When you execute to Read, you using Forward Only Cursor by default hence you are only getting next result after calling Recorset.Next() ! I don't want to go in much deeper here. You can read about cursors here : https://docs.microsoft.com/en-us/sql/ado/guide/data/types-of-cursors-ado?view=sql-server-2017

    The best solution in your case is to use Scalar Resultset which will return only ONE CELL thats exactly what you want to implement without having to loop through your result set. Following example shows how you can implement such :

    using System;
    using System.Data;
    using System.Data.SqlClient;
    
    class ExecuteScalar
    {
      public static void Main()
      {
        SqlConnection mySqlConnection =new SqlConnection("server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI;");
        SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
        mySqlCommand.CommandText ="SELECT COUNT(*) FROM Employee";
        mySqlConnection.Open();
    
        int returnValue = (int) mySqlCommand.ExecuteScalar();
        Console.WriteLine("mySqlCommand.ExecuteScalar() = " + returnValue);
    
        mySqlConnection.Close();
      }
    }
    

    We are using ExecuteScalar to return only ONE Cell. Remember, Even if your Query returns Multiple Rows/Columns, this will only returns VERY FIRST CELL always.

提交回复
热议问题