복붙노트

[SQL] C #을 GUID 및 SQL의 고유 식별자

SQL

C #을 GUID 및 SQL의 고유 식별자

나는 GUID를 생성하고 DB에 저장하고 싶습니다.

C #에서 GUID가 Guid.NewGuid를 사용하여 생성 될 수있다 (). 이것은 128 비트 정수를 생성합니다. SQL Server는 거대한 16 진수를 유지하는 고유 식별자 열이 있습니다.

C # 및 SQL 서버의 GUID가 함께 잘 작동 할 수있는 좋은 / 선호하는 방법이 있습니까? (즉 NVARCHAR 또는 다른 필드를 사용하여 데이터베이스에 저장 한 후 Guid.New () 등을 사용하여 GUID를 생성 ... 또는 SQL 서버는 어떤 다른 수단에 의해 기대되는 형태의 일부 16 진수 작성)

해결법

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

    1.SQL 문자열로 GUID를 기대하고있다. 는 C #에서 다음 SQL을 기대 문자열을 반환합니다.

    SQL 문자열로 GUID를 기대하고있다. 는 C #에서 다음 SQL을 기대 문자열을 반환합니다.

    "'" + Guid.NewGuid().ToString() + "'"
    

    같은 뭔가

    INSERT INTO TABLE (GuidID) VALUE ('4b5e95a7-745a-462f-ae53-709a8583700a')
    

    이 SQL처럼 보일 것입니다 것입니다.

  2. ==============================

    2.다음은 매개 변수화 쿼리를 사용하여 GUID를 삽입하는 방법을 보여주는 코드입니다 :

    다음은 매개 변수화 쿼리를 사용하여 GUID를 삽입하는 방법을 보여주는 코드입니다 :

        using(SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            using(SqlTransaction trans = conn.BeginTransaction())
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.Transaction = trans;
                cmd.CommandText = @"INSERT INTO [MYTABLE] ([GuidValue]) VALUE @guidValue;";
                cmd.Parameters.AddWithValue("@guidValue", Guid.NewGuid());
                cmd.ExecuteNonQuery();
                trans.Commit();
            }
        }
    
  3. ==============================

    3.당신은 SqlDbType.UniqueIdentifier을 지정하여 저장 프로 시저 SQL에 직접 C # GUID 값을 전달할 수 있습니다.

    당신은 SqlDbType.UniqueIdentifier을 지정하여 저장 프로 시저 SQL에 직접 C # GUID 값을 전달할 수 있습니다.

    다음과 같이 보일 수 있습니다 귀하의 방법 (유일한 매개 변수는 GUID입니다 것을 제공)

    public static void StoreGuid(Guid guid)
    {
        using (var cnx = new SqlConnection("YourDataBaseConnectionString"))
        using (var cmd = new SqlCommand {
            Connection = cnx,
            CommandType = CommandType.StoredProcedure,
            CommandText = "StoreGuid",
            Parameters = {
                new SqlParameter {
                    ParameterName = "@guid",
                    SqlDbType = SqlDbType.UniqueIdentifier, // right here
                    Value = guid
                }
            }
        })
        {
            cnx.Open();
            cmd.ExecuteNonQuery();
        }
    }

    참조 : SQL 서버의 고유 식별자

  4. ==============================

    4.고유 식별자의 데이터 유형 필드에 데이터베이스에 저장합니다.

    고유 식별자의 데이터 유형 필드에 데이터베이스에 저장합니다.

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

    5.

    // Create Instance of Connection and Command Object
    SqlConnection myConnection = new SqlConnection(GentEFONRFFConnection);
    myConnection.Open();
    SqlCommand myCommand = new SqlCommand("your Procedure Name", myConnection);
    myCommand.CommandType = CommandType.StoredProcedure;
    myCommand.Parameters.Add("@orgid", SqlDbType.UniqueIdentifier).Value = orgid;
    myCommand.Parameters.Add("@statid", SqlDbType.UniqueIdentifier).Value = statid;
    myCommand.Parameters.Add("@read", SqlDbType.Bit).Value = read;
    myCommand.Parameters.Add("@write", SqlDbType.Bit).Value = write;
    // Mark the Command as a SPROC
    
    myCommand.ExecuteNonQuery();
    
    myCommand.Dispose();
    myConnection.Close();
    
  6. from https://stackoverflow.com/questions/1435908/c-sharp-guid-and-sql-uniqueidentifier by cc-by-sa and MIT license