복붙노트

[SQL] SQL / C 번호 - 쿼리를 실행하기위한 최선의 방법

SQL

SQL / C 번호 - 쿼리를 실행하기위한 최선의 방법

나는 C # 클래스 내에서 SQL 쿼리를 실행해야합니다. 나는이 옵션의 생각

내 질문은 더 나은 방법이 될 것이다입니까? 이 솔루션은 짧은 시간 동안 서버에 대한 연결을 유지하는 것이 중요합니다.

위에서 잘하지 않으면 나는 다른 아이디어에 열려있어.

미리 감사드립니다.

해결법

  1. ==============================

    1.하는 SqlCommand를 사용합니다. (당신의 쿼리 성능이 좋은만큼 긴)이 코드는 시간이 매우 짧은 기간 동안 살아 연결을 유지합니다 :

    하는 SqlCommand를 사용합니다. (당신의 쿼리 성능이 좋은만큼 긴)이 코드는 시간이 매우 짧은 기간 동안 살아 연결을 유지합니다 :

    DataTable results = new DataTable();
    
    using(SqlConnection conn = new SqlConnection(connString))
        using(SqlCommand command = new SqlCommand(query, conn))
            using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command))
               dataAdapter.Fill(results);
    
  2. ==============================

    2.MSDN에서 :

    MSDN에서 :

    다음의 예는도록 SqlConnection하는하는 SqlCommand 및 SqlDataReader 개체를 만듭니다. 예는 콘솔에 기록 데이터를 통해 판독한다. 그것은 사용하여 코드 블록을 종료 마지막으로,이 예제는 SqlDataReader 개체 다음도록 SqlConnection을 닫습니다.

    private static void ReadOrderData(string connectionString)
    {
        string queryString = 
            "SELECT OrderID, CustomerID FROM dbo.Orders;";
        using (SqlConnection connection = new SqlConnection(
                   connectionString))
        {
            SqlCommand command = new SqlCommand(
                queryString, connection);
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    Console.WriteLine(String.Format("{0}, {1}",
                        reader[0], reader[1]));
                }
            }
            finally
            {
                // Always call Close when done reading.
                reader.Close();
            }
        }
    }
    
  3. ==============================

    3.때에 따라 다르지. 당신은 사용이 확인 될 수 SQLCMD 프로세스를 분기 쿼리의 결과에 대해 걱정하지 마십시오. 반면에 경우에 당신은 더 나은 사용 ADO.NET하는 것입니다 결과를 제어 할 필요가있다. 연결 문자열에 풀링 = 거짓을 추가하여 오랜 시간이 있는지 확인 비활성화 ADO.NET 연결 풀링에 대한 연결 개방을 유지 피하기 위해 :

    때에 따라 다르지. 당신은 사용이 확인 될 수 SQLCMD 프로세스를 분기 쿼리의 결과에 대해 걱정하지 마십시오. 반면에 경우에 당신은 더 나은 사용 ADO.NET하는 것입니다 결과를 제어 할 필요가있다. 연결 문자열에 풀링 = 거짓을 추가하여 오랜 시간이 있는지 확인 비활성화 ADO.NET 연결 풀링에 대한 연결 개방을 유지 피하기 위해 :

    using (var conn = new SqlConnection("Data Source=server;Initial Catalog=somedb;User Id=foo;Password=secret;Pooling=false"))
    using (var cmd = conn.CreateCommand())
    {
        conn.Open();
        cmd.CommandText = "DELETE FROM foo";
        var result = cmd.ExecuteNonQuery();
    }
    
  4. ==============================

    4.난 당신이 다른 프로세스를 연결할 필요가 없기 때문에하는 SqlCommand가 분명한 승자라고 생각합니다. 당신이 그것으로 완료대로 즉시 데이터베이스 연결을 닫을 수 있습니다.

    난 당신이 다른 프로세스를 연결할 필요가 없기 때문에하는 SqlCommand가 분명한 승자라고 생각합니다. 당신이 그것으로 완료대로 즉시 데이터베이스 연결을 닫을 수 있습니다.

    그리고 당신은 또한 SQLCMD 사용할 수없는 시스템에 응용 프로그램을 배포 할 수 있습니다.

  5. ==============================

    5.나는 SQL 서버에 연결할 때이 클래스에만 사용할 수 있습니다 SqlCommand를 좋은 아이디어라고 생각하지만, 명심하십시오. 당신은 당신이 오라클을 처리하는 경우 명령 / 연결 클래스의 다른 유형 또는 다른 데이터베이스에은 OleDb 연결이 필요합니다. 내가 그에 읽을 것이다 있도록 데이터 명령 모두는 DbCommand에서 상속 객체.

    나는 SQL 서버에 연결할 때이 클래스에만 사용할 수 있습니다 SqlCommand를 좋은 아이디어라고 생각하지만, 명심하십시오. 당신은 당신이 오라클을 처리하는 경우 명령 / 연결 클래스의 다른 유형 또는 다른 데이터베이스에은 OleDb 연결이 필요합니다. 내가 그에 읽을 것이다 있도록 데이터 명령 모두는 DbCommand에서 상속 객체.

  6. from https://stackoverflow.com/questions/3735531/sql-c-best-method-for-executing-a-query by cc-by-sa and MIT license