私はC#を初めて使用します。以下を使用して列数を取得しようとしています。
SELECT count(*) FROM sys.columns
コマンドの使い方を説明して、変数に入れてください。
私はC#を初めて使用します。以下を使用して列数を取得しようとしています。
SELECT count(*) FROM sys.columns
コマンドの使い方を説明して、変数に入れてください。
他の人が言ったようにあなたは使う必要があるでしょうExecuteScalar
。また、特定のテーブルSELECT
のobject_id
列を取得するには、列でフィルターをかける必要があります。
SELECT count(*) FROM sys.columns WHERE object_id = OBJECT_ID(N'table_name')
または、 ANSI標準のINFORMATION_SCHEMA
ビューに慣れて、将来性のあるクロスRDBMSの方法で同じ情報を見つけるよりも悪いことをすることもできます。
データベースに接続するには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
コマンドを使用して、スカラー変数を取得する必要があります。
SqlCommand cmd = new SqlCommand(sql, conn);
Int32 count = (Int32)cmd.ExecuteScalar();
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();
}
単一の要素を取得するには、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();
}
}
}
使用する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);
}
}
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();