복붙노트

[SQL] 문, SQL 및도록 SqlConnection을 사용하는 C #을

SQL

문, SQL 및도록 SqlConnection을 사용하는 C #을

이것은 using 문 C # SQL을 사용하여 수 있습니까?

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

연결을 여는 동안 오류가 무엇이 있다면?

using 문은 마지막으로 시도하고있다  어떤 캐치하지

그래서 나는 캐치 캐치 것 연결 여는 동안 오류가 발생하여 괄호 밖에서 잡으면?

그렇지 않다면, 어떻게이 위에 표시된 사용하여 문을 사용하여이를 구현하는 방법?

해결법

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

    1.그것은 C #으로 그렇게하는 것이 가능하다 (나는 또한 그 코드가 정확히 MSDN http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx을에 표시됩니다 참조). 당신이 방어 및 프로덕션 환경에서 문제 해결을 도움이 될 잠재적 인 예외를 기록, 예를 들어 일해야하는 경우, 당신은이 방법을 수행 할 수 있습니다

    그것은 C #으로 그렇게하는 것이 가능하다 (나는 또한 그 코드가 정확히 MSDN http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx을에 표시됩니다 참조). 당신이 방어 및 프로덕션 환경에서 문제 해결을 도움이 될 잠재적 인 예외를 기록, 예를 들어 일해야하는 경우, 당신은이 방법을 수행 할 수 있습니다

    private static void CreateCommand(string queryString,
    string connectionString)
    {
        using (SqlConnection connection = new SqlConnection(
               connectionString))
        {
            try
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
            catch (InvalidOperationException)
            {
                //log and/or rethrow or ignore
            }
            catch (SqlException)
            {
                //log and/or rethrow or ignore
            }
            catch (ArgumentException)
            {
                //log and/or rethrow or ignore
            }
        }
    }
    
  2. ==============================

    2.당신이있는 오류를 포착하려는 경우에 당신은 시도에 모든 것을 포장해야합니다 - catch 블록을. 블록을 사용하여 간단하게 관리되지 않는 리소스를 배치 것을, 그들은 예외를 처리 할 수 ​​있도록.

    당신이있는 오류를 포착하려는 경우에 당신은 시도에 모든 것을 포장해야합니다 - catch 블록을. 블록을 사용하여 간단하게 관리되지 않는 리소스를 배치 것을, 그들은 예외를 처리 할 수 ​​있도록.

    또한, SqlCommand를 구현으로 IDisposable, 그래서 내가 사용하는 블록에 있음을 넣어 제안뿐만 아니라 것입니다.

  3. ==============================

    3.다만 명시 적으로 쓰는 :

    다만 명시 적으로 쓰는 :

    SqlConnection connection = new SqlConnection(connectionString);
    try
    {
        using (SqlCommand command = new SqlCommand(queryString, connection))
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
    }
    catch (Exception e)
    {
        // ...handle, rethrow. Also, you might want to catch
        // more specific exceptions...
    }
    finally
    {
        connection.Close();
    }
    
  4. ==============================

    4.예, 당신은 try 블록에서 사용하는 블록을 넣을 수 있습니다, 다음과 같은 캐치 try 블록에 관련된 오류를 잡을 것입니다.

    예, 당신은 try 블록에서 사용하는 블록을 넣을 수 있습니다, 다음과 같은 캐치 try 블록에 관련된 오류를 잡을 것입니다.

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

    5.필드에 대한 데이터베이스에 고유 인덱스를 추가하고 오류를 잡을 수있어.

    필드에 대한 데이터베이스에 고유 인덱스를 추가하고 오류를 잡을 수있어.

    각 행에 대해 SQL 연결을 reinstantiate하지 마십시오. 열기 및 연결을 닫으면 리소스를 많이 사용합니다. 이 같은 시도 :

    protected void btn_insert_Click(object sender, EventArgs e)
    {
        string connStr = "your connection string";
        SqlCommand cmd;
    
        using (SqlConnection con = new SqlConnection(connStr))
        {
            con.Open();
            foreach (GridViewRow g1 in GridView1.Rows)
            {
                try
                {
                    cmd = new SqlCommand("command text", con);
                    cmd.ExecuteNonQuery();
                }
                catch (SqlException sqlEx)
                {
                    //Ignore the relevant Sql exception for violating a sql unique index
                }
            }
        }
    }
    
  6. from https://stackoverflow.com/questions/3079098/the-c-sharp-using-statement-sql-and-sqlconnection by cc-by-sa and MIT license