4

私はC#を初めて使用します。以下を使用して列数を取得しようとしています。

SELECT count(*) FROM sys.columns 

コマンドの使い方を説明して、変数に入れてください。

4

7 に答える 7

4

他の人が言ったようにあなたは使う必要があるでしょうExecuteScalarまた、特定のテーブルSELECTobject_id列を取得するには、列でフィルターをかける必要があります。

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

または、 ANSI標準のINFORMATION_SCHEMAビューに慣れて、将来性のあるクロスRDBMSの方法で同じ情報を見つけるよりも悪いことをすることもできます。

于 2012-05-22T09:26:38.107 に答える
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

于 2012-05-22T09:23:29.033 に答える
2

コマンドを使用して、スカラー変数を取得する必要があります。

SqlCommand cmd = new SqlCommand(sql, conn);
Int32 count = (Int32)cmd.ExecuteScalar();
于 2012-05-22T09:26:24.773 に答える
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();
        }
于 2012-05-22T09:24:07.777 に答える
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();
                     }
                }
             }
于 2012-05-22T09:24:52.420 に答える
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);
    }
}
于 2012-05-22T09:22:01.070 に答える
0

System.Data.SqlClient名前空間でADO.NET関数を使用することをお勧めします。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();
于 2012-05-22T09:27:31.590 に答える