📄 manual_clients.html
字号:
const char *db)</code> </p>
<h4>20.4.4.1 说明</h4>
<p>改变用户并且使得由<code>db</code>指定数据库成为由<code>mysql</code>指定的连接上的缺省(当前)数据库。在随后的查询中,这个数据库是不包括一个明确的数据库指定符的表引用的缺省值。</p>
<p>这个函数功能在<strong>MySQL</strong> 3.23.3中引入。</p>
<p>除非连接的用户能被认证或如果他没有权限使用数据库,<code>mysql_change_user()</code>失败。在这种情况下,用户和数据库都没被改变。</p>
<p>如果你不想有一个缺省数据库,<code>db</code>参数可以被设置为<code>NULL</code>。
</p>
<h4>20.4.4.2 返回值</h4>
<p>成功,零。如果发生一个错误发生,非零。 </p>
<h4>20.4.4.3 错误</h4>
<p>与你能从<code>mysql_real_connect()</code>得到的相同。
<dl COMPACT="mysql_change_user">
<dt><code>CR_COMMANDS_OUT_OF_SYNC</code> </dt>
<dd>命令以一个不正确的次序被执行。 </dd>
<dt><code>CR_SERVER_GONE_ERROR</code> </dt>
<dd><strong>MySQL</strong>服务者关闭了。 </dd>
<dt><code>CR_SERVER_LOST</code> </dt>
<dd>对服务者的连接在查询期间失去。 </dd>
<dt><code>CR_UNKNOWN_ERROR</code> </dt>
<dd>发生一个未知的错误。 </dd>
<dt><code>ER_UNKNOWN_COM_ERROR</code> </dt>
<dd><strong>MySQL</strong>服务器未实现这个命令(可能是一个老的服务器)</dd>
<dt><code>ER_ACCESS_DENIED_ERROR</code> </dt>
<dd>用户或口令错误。 </dd>
<dt><code>ER_BAD_DB_ERROR</code> </dt>
<dd>数据库不存在。 </dd>
<dt><code>ER_DBACCESS_DENIED_ERROR</code> </dt>
<dd>用户没有数据库的存取权利。 </dd>
<dt><code>ER_WRONG_DB_NAME</code> </dt>
<dd>数据库名字太长。 </dd>
</dl>
<h4>20.4.4.4 范例</h4>
<pre>if (mysql_change_user(&mysql, "user", "password", "new_database"))
{
fprintf(stderr, "Failed to change user. Error: %s\n",
mysql_error(&mysql));
}
<a NAME="IDX727"></a> </pre>
<h3><a NAME="mysql_create_db" HREF="manual_toc.html#mysql_create_db">20.4.5<code>
mysql_create_db()</code></a></h3>
<p><code>int mysql_create_db(MYSQL *mysql, const char *db)</code> </p>
<h4>20.4.5.1 说明</h4>
<p>创建由<code>db</code>参数命名的数据库。 </p>
<p>这个函数不推荐,而最好使用<code>mysql_query()</code>发出一条SQL<code>
CREATE DATABASE</code>语句。 </p>
<h4>20.4.5.2 返回值</h4>
<p>如果数据库成功地被创造,零。如果发生一个错误,非零。 </p>
<h4>20.4.5.3 错误</h4>
<dl COMPACT="mysql_create_db">
<dt><code>CR_COMMANDS_OUT_OF_SYNC</code> </dt>
<dd>命令以一个不正确的次序被执行。 </dd>
<dt><code>CR_SERVER_GONE_ERROR</code> </dt>
<dd><strong>MySQL</strong>服务器关闭了。</dd>
<dt><code>CR_SERVER_LOST</code> </dt>
<dd>对服务者的连接在查询期间失去。</dd>
<dt><code>CR_UNKNOWN_ERROR</code> </dt>
<dd>发生一个未知的错误。 </dd>
</dl>
<h4>20.4.5.4 范例</h4>
<pre>if(mysql_create_db(&mysql, "my_database"))
{
fprintf(stderr, "Failed to create new database. Error: %s\n",
mysql_error(&mysql));
}
<a NAME="IDX728"></a> </pre>
<h3><a NAME="mysql_data_seek" HREF="manual_toc.html#mysql_data_seek">20.4.6<code>
mysql_data_seek()</code></a></h3>
<p><code>void mysql_data_seek(MYSQL_RES *result, unsigned long long offset)</code> </p>
<h4>20.4.6.1 说明</h4>
<p>在一个查询结果集合中定位任意行。这要求结果集合结构包含查询的全部结果,这样<code>mysql_data_seek()</code>可以仅需与<code>mysql_store_result()</code>一起使用,不是与<code>mysql_use_result()</code>。</p>
<p>偏移量应该是从0到<code>mysql_num_rows(result)-1</code>范围的一个值。</p>
<h4>20.4.6.2 返回值</h4>
<p>无。 </p>
<h4>20.4.6.3 错误</h4>
<p>无。 </p>
<p> </p>
<h3><a NAME="mysql_debug" HREF="manual_toc.html#mysql_debug">20.4.7<code> mysql_debug()</code></a></h3>
<p><code>void mysql_debug(char *debug)</code> </p>
<h4>20.4.7.1 说明</h4>
<p>用一个给定字符串做一个<code>DBUG_PUSH</code>。<code>mysql_debug()</code>使用Fred
Fish 调试库。为了使用这个函数,你必须编译客户库以支持调试。见<a HREF="manual_Porting.html#Debugging_server">G.1 调试一个MySQL服务器</a>和节<a HREF="manual_Porting.html#Debugging_client">G.2 调试一个MySQL客户</a>。 </p>
<h4>20.4.7.2 返回值</h4>
<p>无。 </p>
<h4>20.4.7.3 错误</h4>
<p>无。 </p>
<h4>20.4.7.4 范例</h4>
<p>下面所示的调用使得客户库在客户机器上<tt>的“/tmp/client.trace”</tt>中产生一个跟踪文件:
</p>
<pre>mysql_debug("d:t:O,/tmp/client.trace");
<a NAME="IDX730"></a> </pre>
<h3><a NAME="mysql_drop_db" HREF="manual_toc.html#mysql_drop_db">20.4.8<code>
mysql_drop_db()</code></a></h3>
<p><code>int mysql_drop_db(MYSQL *mysql, const char *db)</code> </p>
<h4>20.4.8.1 说明</h4>
<p>抛弃由<code>db</code>参数命名的数据库。 </p>
<p>这个函数不推荐,而最好使用<code>mysql_query()</code>发出一条SQL<code>
DROP DATABASE</code>语句。 </p>
<h4>20.4.8.2 返回值</h4>
<p>如果数据库成功地被破抛弃,零。如果发生一个错误,非零。 </p>
<h4>20.4.8.3 错误</h4>
<dl COMPACT="mysql_drop_db">
<dt><code>CR_COMMANDS_OUT_OF_SYNC</code> </dt>
<dd>命令以一个不正确的次序被执行。 </dd>
<dt><code>CR_SERVER_GONE_ERROR</code> </dt>
<dd><strong>MySQL</strong>服务器关闭了。</dd>
<dt><code>CR_SERVER_LOST</code> </dt>
<dd>对服务者的连接在查询期间失去。</dd>
<dt><code>CR_UNKNOWN_ERROR</code> </dt>
<dd>发生一个未知的错误。 </dd>
</dl>
<h4>20.4.8.4 范例</h4>
<pre>if(mysql_drop_db(&mysql, "my_database"))
fprintf(stderr, "Failed to drop the database: Error: %s\n",
mysql_error(&mysql));
<a NAME="IDX731"></a> </pre>
<h3><a NAME="mysql_dump_debug_info" HREF="manual_toc.html#mysql_dump_debug_info">20.4.9<code>
mysql_dump_debug_info()</code></a></h3>
<p><code>int mysql_dump_debug_info(MYSQL *mysql)</code> </p>
<h4>20.4.9.1 说明</h4>
<p>指示服务者将一些调试信息写入日志文件。连接的用户对此必须有<strong>precess</strong>权限才能工作。
</p>
<h4>20.4.9.2 返回值</h4>
<p>如果命令成功,零。如果发生一个错误,非零。 </p>
<h4>20.4.9.3 错误</h4>
<dl COMPACT="mysql_dump_debug_info">
<dt><code>CR_COMMANDS_OUT_OF_SYNC</code> </dt>
<dd>命令以一个不正确的次序被执行。 </dd>
<dt><code>CR_SERVER_GONE_ERROR</code> </dt>
<dd><strong>MySQL</strong>服务者关闭了。 </dd>
<dt><code>CR_SERVER_LOST</code> </dt>
<dd>对服务器的连接在查询期间失去。 </dd>
<dt><code>CR_UNKNOWN_ERROR</code> </dt>
<dd>发生一个未知的错误。 </dd>
</dl>
<p> </p>
<h3><a NAME="mysql_eof" HREF="manual_toc.html#mysql_eof">20.4.10<code> mysql_eof()</code></a></h3>
<p><code>my_bool mysql_eof(MYSQL_RES *result)</code> </p>
<h4>20.4.10.1 说明</h4>
<p>这个函数不推荐,而使用<code>mysql_errno()</code>或<code>mysql_error()</code>。
</p>
<p><code>mysql_eof()</code>确定是否已经读到了一个结果集合的最后一行。</p>
<p>如果你从成功的<code>mysql_store_result()</code>调用获得一个结果集合,客户程序用一个操作收到全部集合。在这种情况下,从<code>mysql_fetch_row()</code>返回一个<code>NULL</code>总是意味着已经到达了结果集合的尾部,没必要调用<code>mysql_eof()</code>。
</p>
<p>在另一方面,如果你使用<code>mysql_use_result()</code>初始化一个结果集合的检索,该集合的行随着你重复调用<code>mysql_fetch_row()</code>一个一个地从服务器获得。因为在这个过程中在连接上可能发生一个错误,从<code>mysql_fetch_row()</code>返回一个<code>NULL</code>值并不意味着集合正常到达了尾部。在这种情况下,你能使用<code>mysql_eof()</code>确定发生了什么。如果到达结果集合的尾部,<code>mysql_eof()</code>返回非零值,并且如果发生一个错误,返回零。</p>
<p>在时间上,<code>mysql_eof()</code>先于标准<strong>MySQL</strong>错误函数<code>mysql_errno()</code>和<code>mysql_error()</code>。因为这些错误函数提供相同的信息,他们的使用更好<code>mysql_eof()</code>,它现在不建议使用。(事实上,他们提供更多的信息,因为<code>mysql_eof()</code>值返回一个布尔值,而错误函数指出当发生错误时的出错原因。)</p>
<h4>20.4.10.2 返回值</h4>
<p>如果发生一个错误,零。如果到达结果集合的结束,非零。 </p>
<h4>20.4.10.3 错误</h4>
<p>无。 </p>
<h4>20.4.10.4 范例</h4>
<p>下列例子显示你必须如何使用<code>mysql_eof()</code>:</p>
<pre>mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
// do something with data
}
if(!mysql_eof(result)) // mysql_fetch_row() failed due to an error
{
fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}
</pre>
<p>然而,你可以用标准<strong>MySQL</strong>错误函数完成同样的效果: </p>
<pre>mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
// do something with data
}
if(mysql_errno(&mysql)) // mysql_fetch_row() failed due to an error
{
fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}
<a NAME="IDX733"></a> </pre>
<h3><a NAME="mysql_errno" HREF="manual_toc.html#mysql_errno">20.4.11<code> mysql_errno()</code></a></h3>
<p><code>unsigned int mysql_errno(MYSQL *mysql)</code> </p>
<h4>20.4.11.1 说明</h4>
<p>对于由<code>mysql</code>指定的连接,<code>mysql_errno()</code>返回最近调用的可能成功或失败的API函数的错误代码。返回值零意味着没有错误发生。客户错误消息编号列出在<strong>MySQL</strong><tt>“errmsg.h”</tt>头文件中。服务器错误消息编号列出在<tt>“mysqld_error.h”</tt>中。
</p>
<h4>20.4.11.2 返回值:</h4>
<p>一个错误代码值。如果没有错误发生,零。 </p>
<h4>20.4.11.3 错误</h4>
<p>无。 </p>
<p><a NAME="IDX734"></a></p>
<h3><a NAME="mysql_error" HREF="manual_toc.html#mysql_error">20.4.12<code> mysql_error()</code></a></h3>
<p><code>char *mysql_error(MYSQL *mysql)</code> </p>
<h4>20.4.12.1 说明</h4>
<p>对于由<code>mysql</code>指定的连接,<code>mysql_errno()</code>返回最近调用的可能成功或失败的API函数的错误代码。如果没有错误发生,返回空字符串(<code>""</code>)。这意味着下列两个测试是等价的:</p>
<pre>if(mysql_errno(&mysql))
{
// an error occurred
}
if(mysql_error(&mysql)[0] != '\0')
{
// an error occurred
}
</pre>
<p>客户错误消息的语言可通过重新编译<strong>MySQL</strong>客户库来改变。目前,你能在几种不同的语言间选取错误消息。见<a HREF="manual_Server.html#Languages">9.1 MySQL支持什么语言?</a>。 </p>
<h4>20.4.12.2 返回值</h4>
<p>一个描述错误的字符串。如果没有错误发生,空字符串。 </p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -