2012-05-22 4 views

ответ

1
string connectionString = 
      "Data Source=(local);Initial Catalog=Northwind;" 
      + "Integrated Security=true"; 

     // Provide the query string with a parameter placeholder. 
     string queryString = 
      "SELECT Count(*) from sys.columns"; 

     // Specify the parameter value. 
     int paramValue = 5; 

     // Create and open the connection in a using block. This 
     // ensures that all resources will be closed and disposed 
     // when the code exits. 
     using (SqlConnection connection = 
      new SqlConnection(connectionString)) 
     { 
      // Create the Command and Parameter objects. 
      SqlCommand command = new SqlCommand(queryString, connection); 

      // Open the connection in a try/catch block. 
      // Create and execute the DataReader, writing the result 
      // set to the console window. 
      try 
      { 
       connection.Open(); 
       SqlDataReader reader = command.ExecuteReader(); 
       while (reader.Read()) 
       { 
        Console.WriteLine("\t{0}", 
         reader[0]); 
       } 
       reader.Close(); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
      Console.ReadLine(); 
     } 
+0

Что такое 'paramValue'? – samjudson

+0

Спасибо за помощь. Как преобразовать число столбцов в целое число для использования в случайной команде? – liamp47

+0

@ liamp47, посмотрите на других (Даррен Дэвис, aleroot, подагра), ответы на них перевернули. – gout

0

Применение ExecuteScalar

Выполняет запрос и возвращает первый столбец первой строки в наборе результатов, возвращаемого запросом. Дополнительные столбцы или строки игнорируются.

Int32 colnumber = 0; 
string sql = "SELECT count(*) FROM sys.columns"; 
using (SqlConnection conn = new SqlConnection(connString)) 
{ 
    SqlCommand cmd = new SqlCommand(sql, conn); 
    try 
    { 
     conn.Open(); 
     colnumber = (Int32)cmd.ExecuteScalar(); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 
4

Для подключения к базе данных вы можете использовать SqlConnection класс, а затем, чтобы получить количество строк вы можете использовать функцию Execute Scalar. Пример из MSDN:

cmd.CommandText = "SELECT count(*) FROM sys.columns;"; 
Int32 count = (Int32) cmd.ExecuteScalar(); 

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection

1

использование ExecuteScalar() для получения одного элемента.

using (SqlConnection con = new SqlConnection(ConnectionString)) //for connecting to database 
      { 
       con.Open(); 
       try 
       { 
        using (SqlCommand getchild = new SqlCommand("select count(*) from table1 ", con)) //SQL queries 
        { 
         Int32 count = (Int32)getchild.ExecuteScalar(); 
        } 
       } 
      } 
1

Вы должны использовать команду и получить обратно скалярную переменную:

SqlCommand cmd = new SqlCommand(sql, conn); 
Int32 count = (Int32)cmd.ExecuteScalar(); 
4

Вам нужно будет использовать ExecuteScalar как уже говорили другие. Кроме того, вам нужно будет отфильтровать ваш SELECT на столбце object_id, чтобы получить столбцы в конкретной таблице.

SELECT count(*) FROM sys.columns WHERE object_id = OBJECT_ID(N'table_name') 

В качестве альтернативы, вы можете сделать хуже, чем ознакомиться с ANSI-standard INFORMATION_SCHEMA views найти ту же информацию в будущем доказательства, кросс-RDBMS пути.

0

Вы должны использовать функции ADO .NET в пространстве имен System.Data.SqlClient. ExecuteScalar - это простой в использовании метод, когда вы хотите получить только один результат. Для нескольких результатов вы можете использовать SqlDataReader.

using System.Data.SqlClient; 
string resultVar = String.Empty; 
string ServerName="localhost"; 
string DatabaseName="foo"; 
     SqlConnection conn=new SqlConnection(String.Format("Data Source={0};Initial Catalog={1};Integrated Security=SSPI",ServerName,DatabaseName)); 
     SqlCommand cmd=new SqlCommand(Query,conn); 
     try 
     { 
      conn.Open(); 
     } 
     catch (SqlException se) 
     { 
      throw new InvalidOperationException(String.Format(
       "Connection error: {0} Num:{1} State:{2}", 
       se.Message,se.Number, se.State)); 
     } 
     resultVar = (string)cmd.ExecuteScalar().ToString(); 
     conn.Close(); 
+3

После вызова ToString() не нужно указывать как (string). – samjudson

+0

lol да. Я слышал, как я бросаю в строчку ... –

Смежные вопросы