mariadb: 바인딩을 c-연결하는 방법
함께 일하고 있습니다.mariadb그리고.c-connect준비된 명령문을 실행하는 동안 한 번씩 충돌합니다.또한 바인딩 인터페이스에 대한 문서가 관심사 때문에 상당히 희박하다는 것도 알고 있습니다.
MYSQL_BIND 구조를 더 잘 이해하고 싶습니다.
모든 바인딩 매개 변수 중 첫 번째입니다.서버가 버퍼를 올바르게 읽을 수 있도록 버퍼를 "설명"했습니다. c 버퍼 또는 데이터베이스 버퍼를 설명해야 합니까?
예를 들어 c는 STRING을 지원하지만 VAR_STRING은 지원하지 않습니다.STRING 버퍼를 정의하고 datetime db 필드에 바인딩하면 어떻게 됩니까?
잘 작동합니다. 훌륭합니다. 하지만 종종 그것은 과정을 파괴합니다.시행착오를 통해 지식을 얻는 데는 많은 시간이 걸립니다.
이것은 1년이 넘었기 때문에 제가 추구하는 질문들로 이어졌습니다. "어디서 더 자세히 읽을 수 있을까요?"
- 구속력 있는 사고방식과 규칙을 사용했습니까?
- 암묵적 변환(날짜<>문자열, ...)이 c-module에 통합되어 있습니까?"
바인딩 설명서에 표시됨is_nulll Pointer which indicates if column is NULL (not used for parameters)그리고.is_null_value Used if is_null pointer is NULL.
이 정보를 적용하는 방법is_null_value Used if is_null pointer is NULL다음과 같은 매개 변수 문자열을 코드에 바인딩할 수 있습니다.
bnd[0].buffer_type = MYSQL_TYPE_STRING;
bnd[0].buffer = (void*) para->name;
bnd[0].is_null_value = para->nameI; // 0 or 1
bnd[0].length = strlen (para->name);
이것은 논리적일 것이지만 저에게는 지금까지 한 번도 제대로 된 적이 없었습니다.해주셨나요?"규칙 집합으로 매개 변수를 바인딩하는 올바른 방법은 무엇이며 그 이유는 무엇입니까?"에 대한 대답을 찾고 있습니다.
좋은 하루 되세요.
MYSQL_BIND데이터 전송에 사용할 수 있습니다(mysql_stmt_bind_param()) 및 데이터 검색용(mysql_stmt_bind_result()).
데이터 전송 중:
데이터를 전송할 때는 매개 변수의 주소, 유형 및 길이를 제공해야 합니다.
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer_length= strlen(para->name);
bind[0].buffer= ¶->name;
또한, para->name이 NULL일 수 있는 경우 다음을 지정해야 합니다.
bind[0].is_null= ¶->is_null; /* para->is_null can be 0 or 1 */
데이터 검색 중:
데이터를 검색할 때 최대 버퍼 크기, 유형 및 버퍼 주소를 지정해야 합니다.
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer_length= max_buffer_length;
bind[0].buffer= param->name;
또한 값의 길이 및/또는 검색된 값이 NULL인지 여부를 알고 싶을 수도 있습니다.
bind[0].is_null= ¶m->is_null;
bind[0].length= ¶m->length;
is_null과 length는 모두 포인터입니다.
데이터 param->name을(를) 가져온 후 param->length는 실제 길이를 포함하고 param->is_null은 NULL 값을 검색한 경우를 나타냅니다.
언급URL : https://stackoverflow.com/questions/76170354/mariadb-howto-c-connect-bindings
'programing' 카테고리의 다른 글
| 보안 규칙으로 하위/필드 액세스 제한 (0) | 2023.06.16 |
|---|---|
| DELETE... RETURNING을 사용하여 삭제된 행에서 정보 선택 (0) | 2023.06.16 |
| 문자열에 숫자만 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2023.06.16 |
| 애플리케이션에서 안드로이드 웹 브라우저의 URL을 열려면 어떻게 해야 합니까? (0) | 2023.06.16 |
| Excel 시트에서 Firebase 데이터를 내보내는 방법 (0) | 2023.06.16 |