목차
8.3 使用C语言访问MySQL数据
8.3.1 连接例程
8.3.2 错误处理
데이터 베이스 MySQL 튜토리얼 linux程序设计使用C语言访问MySQL(第八章)_MySQL

linux程序设计使用C语言访问MySQL(第八章)_MySQL

Jun 01, 2016 pm 01:00 PM
프로그램 작성 언어

8.3 使用C语言访问MySQL数据

Windows本地程序(如Access)可以通过ODBC驱动程序来访问MySQL,甚至有针对linuxODBC驱动程序。
下面讨论使用C语言来访问MySQL.

8.3.1 连接例程

用C语言连接MySQL数据库包含两个步骤:
1.初始化一个连接句柄结构
2.实际进行连接

首先,使用mysql_init来初始化连接句柄
#include
MYSQL *mysql_init(MYSQL *);
通常传递NULL给这个例程,它会返回一个指向新分配的连接句柄结构的指针。如果传递一个已有的结构,它将被重新初始化。这个例程出错时返回NULL。
目前为止,只是分配和初始化了一个结构,仍然需要使用mysql_real_connect来向一个连接提供参数
MYSQL *mysql_real_connect(MYSQL *connection,
const char *server_host,
const char *sql_user_name,
const char *sql_password,
const char *db_name,
unsigned int port_number,
const char *unix_socket_name,
unsigned int flags);
指针connection必须指向已经被mysql_init初始化过的结构。其他参数的含义相当明了,server_host既可以是主机名,也可以是IP地址。如果只是连接到本地机器,可以通过指定localhost来优化连接类型。
sql_user_name和sql_password的含义和它们的字面含义一样。如果登录名为NULL,则假设登录名为当前linux用户的登录ID。如果密码是NULL,则只能访问服务器上无需密码就可访问的数据。密码会在通过传输前进行加密。
port_number和unix_socket_name应该分别为0和NULL,除非改变了MYSQL安装的默认设置。
flag参数用来对一些定义的位模式进行OR操作,使得改变使用协议的某些特征。
如果无法连接,它将返回NULL。mysql_error函数可以提供有帮助的信息。
使用完连接之后,通常在程序退出时,要像下面这样调用函数mysql_close
void mysql_close(MYSQL *connection);
这将关闭连接,如果连接是由mysql_init建立的,MySQL结构会被释放。指针将会无效并无法再次使用。
mysql_options例程(仅能在mysql_init和mysql_real_connect之间调用)可以设置一些选项:
int mysql_options(MYSQL *connection, enum option_to_set, const char *argument);
因为mysql_options一次只能设置一个选项,所以每设置一个选项就要调用它一次。下面列出了3个最常用的选项:
enum选项 实际参数类型 说明
MySQL_OPT_CONNECT_TIMEOUT const unsigned int * 连接超时之前的等待秒数
MySQL_OPT_COMPRESS None,使用NULL 网络连接中使用压缩机制
MySQL_INIT_COMMAND const char * 每次连接建立后发送的命令
如果要设置连接超时时间为7秒,使用的代码片段如下所示:
unsigned int timeout = 7;
connection = mysql_init(NULL);
ret = mysql_options(connection, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout);
if (ret){
}
connection = mysql_real_connect(connection...)
接下来使用一个简短的程序测试一下。
首先进入rick用户,创建一个数据库foo;
mysql -u rick -p
CREATE DATABASE foo;
如果直接在mysql命令行中输入许多创建表和添加数据的命令,这比较容易出错,而且如果再次输入这些命令的话,也很不高效。因此,创建一个包含所需要命令的文件。
这个文件名为create_children.sql;
\. /绝对路径/create_children.sql 来执行这个文件
一定要使用create_children.sql的绝对路径
.
现在有一个用户,一个数据库和一个保存了一些数据的表,接下来看一下如果通过代码来访问这些数据。
编写程序connect1.c,它以用户名rick和密码secret来连接本机服务器上名为foo的数据库。如果出现mysql.h找不到的情况,参见linux找不到mysql.h.
编译这个程序需要同时添加include路径和库文件路径,以及指定链接的库模块mysqlclient.
$ gcc connect1.c -o connect1.exe -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
-I/usr/include/mysql是mysql.h的头文件路径
-L/usr/lib/mysql是库文件路径

8.3.2 错误处理

MySQL使用一系列由连接句柄结构报告的返回码.两个必备的例程是:
unsigned int mysql_errno(MYSQL *connection);
char *mysql_error(MYSQL *connection)
;
可以通过调用mysql_errno并传递连接结构来获得错误码,它通常都是非0值.如果未设定错误码,它将返回0.
mysql_errno的返回值实际上就是错误码,它们在errmsg.h或者mysqld_error.h中定义,前者是报告客户端错误,后者关注服务端错误.mysql_error提供有意义的文本信息,而不是单调的错误码,这些信息被写入一些内部静态内存空间中,如果想保存错误文本,需要把它复制到别的地方.
当调用mysql_real_connect时会遇到一个问题,因为它在失败时返回NULL指针,并没有提供一个错误码.但如果将连接句柄作为一个变量,那么及时mysql_real_connect失败,仍然能够处理它.
编写程序connect2.c,它示例如何使用非动态分配的连接结构,以及如何编写一些基本的错误处理代码.
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11에서 원치 않는 표시 언어를 완전히 제거하는 방법 Windows 11에서 원치 않는 표시 언어를 완전히 제거하는 방법 Sep 24, 2023 pm 04:25 PM

동일한 설정으로 너무 오랫동안 작업하거나 다른 사람과 PC를 공유하십시오. 일부 언어 팩이 설치되어 있을 수 있으며 이로 인해 종종 충돌이 발생합니다. 이제 Windows 11에서 원치 않는 표시 언어를 제거해야 할 때입니다. 충돌에 대해 말하면 여러 언어 팩이 있는 경우 실수로 Ctrl+Shift를 누르면 키보드 레이아웃이 변경됩니다. 이를 처리하지 않으면 현재 작업에 방해가 될 수 있습니다. 그럼 바로 방법을 살펴보겠습니다! Windows 11에서 표시 언어를 제거하는 방법은 무엇입니까? 1. 설정에서 +를 눌러 설정 앱을 열고 탐색 창에서 시간 및 언어로 이동한 후 언어 및 지역을 클릭하세요. Windows제거하려는 표시 언어 옆에 있는 줄임표를 클릭하고 팝업 메뉴에서 제거를 선택합니다. "를 클릭하세요.

iPhone에서 언어를 변경하는 3가지 방법 iPhone에서 언어를 변경하는 3가지 방법 Feb 02, 2024 pm 04:12 PM

iPhone이 가장 사용자 친화적인 전자 기기 중 하나라는 사실은 비밀이 아니며, 그 이유 중 하나는 원하는 대로 쉽게 개인화할 수 있다는 것입니다. 개인화에서는 iPhone을 설정할 때 선택한 언어와 다른 언어로 언어를 변경할 수 있습니다. 여러 언어에 익숙하거나 iPhone의 언어 설정이 잘못된 경우 아래 설명에 따라 변경할 수 있습니다. iPhone 언어 변경 방법 [3가지 방법] iOS를 사용하면 사용자가 iPhone에서 선호하는 언어를 자유롭게 전환하여 다양한 요구에 적응할 수 있습니다. Siri와의 상호 작용 언어를 변경하여 음성 지원과의 의사소통을 용이하게 할 수 있습니다. 동시에 로컬 키보드를 사용하면 여러 언어 간을 쉽게 전환하여 입력 효율성을 높일 수 있습니다.

대규모 언어 모델에 포괄적인 시청각 기능을 추가하는 DAMO Academy는 소스 Video-LLaMA를 공개합니다. 대규모 언어 모델에 포괄적인 시청각 기능을 추가하는 DAMO Academy는 소스 Video-LLaMA를 공개합니다. Jun 09, 2023 pm 09:28 PM

비디오는 오늘날의 소셜 미디어와 인터넷 문화에서 점점 더 중요한 역할을 하고 있으며 Douyin, Kuaishou, Bilibili 등은 수억 명의 사용자에게 인기 있는 플랫폼이 되었습니다. 사용자는 자신의 삶의 순간, 창작물, 흥미로운 순간, 기타 콘텐츠를 동영상을 중심으로 공유하여 다른 사람들과 교류하고 소통합니다. 최근에는 대규모 언어 모델이 인상적인 기능을 보여주었습니다. 대형 모델에 "눈"과 "귀"를 장착하여 비디오를 이해하고 사용자와 상호 작용할 수 있습니까? DAMO 아카데미 연구진은 이러한 문제에서 출발하여 종합적인 시청각 기능을 갖춘 대형 모델인 Video-LLaMA를 제안했습니다. Video-LLaMA는 비디오의 비디오 및 오디오 신호를 인식하고 이해할 수 있으며 오디오 및 비디오를 기반으로 일련의 복잡한 작업을 완료하기 위해 사용자가 입력한 지침을 이해할 수 있습니다.

Win10 컴퓨터의 언어를 중국어로 설정하는 방법은 무엇입니까? Win10 컴퓨터의 언어를 중국어로 설정하는 방법은 무엇입니까? Jan 05, 2024 pm 06:51 PM

때로는 컴퓨터 시스템을 설치했는데 시스템이 영어로 되어 있는 경우가 있습니다. 이 경우 컴퓨터 언어를 중국어로 변경해야 합니다. 이제 win10 시스템에서 컴퓨터 언어를 중국어로 변경하는 방법을 알려주세요. . win10에서 컴퓨터 언어를 중국어로 변경하는 방법 1. 컴퓨터를 켜고 왼쪽 하단에 있는 시작 버튼을 클릭합니다. 2. 왼쪽의 설정 옵션을 클릭하세요. 3. 열리는 페이지에서 "시간 및 언어"를 선택합니다. 4. 연 후 왼쪽의 "언어"를 클릭합니다. 5. 여기에서 원하는 컴퓨터 언어를 설정할 수 있습니다.

입만 움직여도 놀 수 있어요! AI를 사용하여 캐릭터를 바꾸고 적을 공격하십시오. 네티즌: '아야카, 카미리류 프로스트 파괴를 사용하세요.' 입만 움직여도 놀 수 있어요! AI를 사용하여 캐릭터를 바꾸고 적을 공격하십시오. 네티즌: '아야카, 카미리류 프로스트 파괴를 사용하세요.' May 13, 2023 pm 07:52 PM

지난 2년 동안 전 세계적으로 인기를 얻은 국내 게임의 경우 Genshin Impact가 확실히 선두를 차지했습니다. 지난 5월 발표된 올해 1분기 모바일게임 매출 조사 보고서에 따르면 '원신임팩트'가 5억6700만달러의 절대우위로 카드드로잉 모바일게임 부문 1위를 굳건히 차지했다고 밝혔다. 불과 18년 만에 모바일 플랫폼의 총 수익이 30억 달러(약 RM130억)를 넘어섰습니다. 이제 Xumi가 개장하기 전 마지막 2.8 섬 버전이 기한이 지났습니다. 오랜 드래프트 기간을 거쳐 마침내 새로운 플롯과 플레이할 영역이 생겼습니다. 그런데 '간황제'가 몇 명인지는 모르겠습니다. 이제 섬을 완전히 탐험하고 나니 다시 풀이 자라기 시작했습니다. 총 182개의 보물 상자 + 1개의 모라 상자(포함되지 않음)가 있습니다. 긴 잔디 기간에 대해 걱정할 필요가 없습니다. 아니, 긴 풀밭에서

에이전트의 경계 탐색: 대규모 언어 모델 에이전트의 성능을 종합적으로 측정하고 개선하기 위한 모듈형 벤치마크 프레임워크인 AgentQuest 에이전트의 경계 탐색: 대규모 언어 모델 에이전트의 성능을 종합적으로 측정하고 개선하기 위한 모듈형 벤치마크 프레임워크인 AgentQuest Apr 11, 2024 pm 08:52 PM

대규모 모델의 지속적인 최적화를 기반으로 하는 LLM 에이전트(이러한 강력한 알고리즘 엔터티)는 복잡한 다단계 추론 작업을 해결할 수 있는 잠재력을 보여주었습니다. 자연어 처리부터 딥 러닝까지 LLM 에이전트는 인간의 언어를 이해하고 생성할 수 있을 뿐만 아니라 전략을 수립하고 다양한 환경에서 작업을 수행하며 심지어 API 호출 및 코딩을 사용하여 빌드까지 할 수 있어 점차 연구 및 산업의 초점이 되고 있습니다. 솔루션. 이러한 맥락에서 AgentQuest 프레임워크의 도입은 LLM 에이전트의 평가 및 발전을 위한 모듈식 벤치마킹 플랫폼을 제공할 뿐만 아니라 연구원에게 이러한 에이전트의 성능을 추적하고 개선할 수 있는 강력한 도구를 제공합니다. 좀 더 세분화된 수준

vivox60pro의 언어 표시를 변경하는 방법 vivox60pro 시스템 언어 설정 방법 vivox60pro의 언어 표시를 변경하는 방법 vivox60pro 시스템 언어 설정 방법 Mar 23, 2024 am 09:06 AM

1. 휴대폰 설정 메뉴에서 [시스템 관리]를 클릭하세요. 2. [언어] 항목을 클릭하세요. 3. 사용하려는 시스템 언어를 선택합니다.

대형 모델에서 B-엔드 프런트엔드 코드 생성 지원에 대한 생각과 실습 대형 모델에서 B-엔드 프런트엔드 코드 생성 지원에 대한 생각과 실습 Apr 18, 2024 am 09:30 AM

1. 백그라운드 재구성 작업 중 코드 사양: B-엔드 프런트엔드 개발 프로세스 중에 개발자는 항상 반복 개발의 어려움에 직면하게 됩니다. 많은 CRUD 페이지의 요소 모듈은 기본적으로 유사하지만 여전히 수동으로 개발해야 합니다. , 간단한 요소 구성에 시간이 소요됩니다. 이는 비즈니스 요구 사항의 개발 효율성을 감소시키는 동시에 다양한 개발자의 코딩 스타일이 일관되지 않기 때문에 다른 개발자가 반복을 시작하는 데 더 많은 비용이 듭니다. AI는 단순한 두뇌 능력을 대체합니다. 대규모 AI 모델의 지속적인 개발로 AI는 간단한 이해 기능을 갖추고 있으며 언어를 지침으로 변환할 수 있습니다. 기본 페이지 구축에 대한 일반 지침은 일상적인 기본 페이지 구축 요구 사항을 충족하고 일반 시나리오에서 비즈니스 개발 효율성을 향상시킬 수 있습니다. 2. 링크 목록 생성 B면 페이지 목록, 양식 및 세부 정보 생성 링크는 대략 다음과 같은 범주로 나눌 수 있습니다.

See all articles