最近很多小伙伴都在问在c++项目中使用mysql_query进行多个查询和c++操作mysql数据库这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展c#–如何使用MysqlData
最近很多小伙伴都在问在c ++项目中使用mysql_query进行多个查询和c++操作mysql数据库这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展c# – 如何使用MysqlDataReader运行多个查询、mysql_db_query 与mysql_query 查询区别、mysql_query — 发送一条 MySQL 查询、mysql_unbuffered_query与mysql_query的区别等相关知识,下面开始了哦!
本文目录一览:- 在c ++项目中使用mysql_query进行多个查询(c++操作mysql数据库)
- c# – 如何使用MysqlDataReader运行多个查询
- mysql_db_query 与mysql_query 查询区别
- mysql_query — 发送一条 MySQL 查询
- mysql_unbuffered_query与mysql_query的区别
在c ++项目中使用mysql_query进行多个查询(c++操作mysql数据库)
因此,这不适用于mysql_query。
我严格使用c ++,并且我没有使用php。
我希望执行此双重查询,以便在由并发用户创建ID的交易系统中,我将始终具有唯一ID。
mysql_query(connection, \"INSERT INTO User() VALUES (); SELECT LAST_INSERT_ID(); ");
它可以完美地在MySql数据库中运行,但是我需要将其添加到Eclipse(我正在使用Ubuntu 12.04 LTS)。
我的应用程序很大,如果可能的话,我不想更改为mysqli,但是如果没有其他方法,那就可以了。
你能帮我吗?提前致谢。
答案1
小编典典根据MySQL C API文档:
MySQL
5.6还支持执行包含以分号(``;’‘)字符分隔的多个语句的字符串。通过使用mysql_real_connect()连接到服务器时或通过调用mysql_set_server_option()连接后指定的特殊选项,可以启用此功能。
和:
CLIENT_MULTI_STATEMENTS使mysql_query()和mysql_real_query()能够执行包含由分号分隔的多个语句的语句字符串。此选项还隐式启用CLIENT_MULTI_RESULTS,因此,将CLIENT_MULTI_STATEMENTS的flags参数设置为mysql_real_connect()等效于CLIENT_MULTI_STATEMENTS
| CLIENT_MULTI_RESULTS。也就是说,CLIENT_MULTI_STATEMENTS足以启用多语句执行和所有多结果处理。
因此,假设您使用mysql_real_connect设置了一些不同的mysql连接,则可以在单个mysql_query()调用中提供多个语句,并用分号分隔。您需要将以下标志作为最后一个参数传递:CLIENT_MULTI_STATEMENTS,其文档说:
告诉服务器客户端可以在单个字符串中发送多个语句(以``;’‘分隔)。如果未设置此标志,则禁用多语句执行。有关此标志的更多信息,请参见此表后面的注释。
请参阅C API对多语句执行的支持和22.8.7.53。mysql_real_connect()了解更多详细信息。
c# – 如何使用MysqlDataReader运行多个查询
我用Google搜索并发现@ according to MSDN不受支持,我需要有关如何修复它的指导?
public IEnumerable<BuildNotes_op> RetrieveBuildDetails(string BuildID) { .... var conn = new MysqL.Data.MysqLClient.MysqLConnection(); conn.ConnectionString = AciDev.aciDevConnectionString; try { Console.WriteLine("Connecting to MysqL..."); conn.open(); string sql = @"query1"; MysqLCommand cmd = new MysqLCommand(sql,conn); MysqLDataReader rdr = cmd.ExecuteReader(); --> **rdr open here** .... while (rdr.Read()) { ..... if (rdr[4] != dbnull.Value) .................... else ........ string sql_get_latest_build_notes_cmd = "query2"; MysqLCommand get_latest_build_notes_cmd = new MysqLCommand(sql_get_latest_build_notes_cmd,conn); MysqLDataReader rdr_get_latest_build_notes = get_latest_build_notes_cmd.ExecuteReader(); --> **throws exception here** if (rdr_get_latest_build_notes.HasRows) { .................... } rdr_get_latest_build_notes.Close(); if (BuildDetails != null) { BuildNotesDetails.Add(BuildDetails); } } rdr.Close(); conn.Close(); return BuildNotesDetails; } catch { throw; } finally { conn.Close(); }
例外:
There is already an open DataReader associated with this Connection which must be closed first.
解决方法
public IEnumerable<BuildNotes_op> RetrieveBuildDetails(string BuildID) { var conn = new MysqL.Data.MysqLClient.MysqLConnection(); var conn2 = new MysqL.Data.MysqLClient.MysqLConnection(); conn.ConnectionString = AciDev.aciDevConnectionString; try { Console.WriteLine("Connecting to MysqL..."); conn.open(); string sql = @"query1"; MysqLCommand cmd = new MysqLCommand(sql,conn); MysqLDataReader rdr = cmd.ExecuteReader(); --> **rdr open here** .... while (rdr.Read()) { ..... if (rdr[4] != dbnull.Value) .................... else ........ string sql_get_latest_build_notes_cmd = "query2"; conn2.ConnectionString = AciDev.aciDevConnectionString; Console.WriteLine("Connecting to MysqL..."); conn2.open(); MysqLCommand get_latest_build_notes_cmd = new MysqLCommand(sql_get_latest_build_notes_cmd,conn2); MysqLDataReader rdr_get_latest_build_notes = get_latest_build_notes_cmd.ExecuteReader(); --> **throws exception here** if (rdr_get_latest_build_notes.HasRows) { .................... } rdr_get_latest_build_notes.Close(); conn2.Close(); if (BuildDetails != null) { BuildNotesDetails.Add(BuildDetails); } } rdr_get_latest_build_notes.Close(); rdr.Close(); conn.Close(); conn2.Close(); return BuildNotesDetails; } catch { throw; } finally { rdr_get_latest_build_notes.Close(); rdr.Close(); conn.Close(); conn2.Close(); }
创建第二个连接var
mysql_db_query 与mysql_query 查询区别
区别就不说了,看了上面的实例就知道了,主要是多了一个mysql_select_db的区别,关于性能方面自PHP 4.0.6 起不提倡使用此函数。不要用此函数,用mysql_select_db() 和mysql_query() 来替代
mysql_query — 发送一条 MySQL 查询
仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回
一个资源标识符,如果查询执行不正确则返回 FALSE。对于
其它类型的 SQL 语句,在执行成功时返回 TRUE,出错时返回 FALSE。
非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并
不说明任何有关影响到的或返回的行数。 很有可能一条查询执行成
功了但并未影响到或并未返回任何行.
create database "数据库名称"; 创建数据库
show databases; 显示数据库
create database name; 创建数据库
use databasename; 选择数据库
drop database name 直接删除数据库,不提醒
show tables; 显示表
describe tablename; 显示具体的表结构
select 中加上distinct去除重复字段
mysql_num_rows — 取得结果集中行的数目
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);
$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);
echo "$num_rows Rows\n";
?>
mysql_unbuffered_query与mysql_query的区别
PHP
php mysql_data_seek() 函数
定义和用法
mysql_data_seek() 函数移动内部结果的指针。
语法
mysql_data_seek(data,row)
参数
描述
data
必需。返回类型为 resource 的结果集。该结果集从 mysql_query() 的调用中得到。
row
必需。想要设定的新的结果集指针的行数。0 指示第一个记录。
说明
mysql_data_seek() 将 data 参数指定的 MySQL 结果内部的行指针移动到指定的行号。
接着调用 mysql_fetch_row() 将返回那一行。
row 从 0 开始。row 的取值范围应该从 0 到 mysql_num_rows – 1。
但是如果结果集为空(mysql_num_rows() == 0),要将指针移动到 0 会失败并发出 E_WARNING 级的错误,mysql_data_seek() 将返回 false。
返回值
如果成功则返回 true,失败则返回 false。
提示和注释
注释:mysql_data_seek() 只能和 mysql_query()一起使用,,而不能用于 mysql_unbuffered_query()。
例子
$conn = mysql_connect(‘localhost’,''root’,''root’);
mysql_query(‘set names gbk’);
mysql_select_db(‘pw8′,$conn);
$sql = "SELECT * FROM shop_district";
//$result = mysql_unbuffered_query($sql,$conn);
$result = mysql_query($sql,$conn);
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s FID: %s Name: %s
", $row[0], $row[1], $row[2]);
}
mysql_data_seek($result,0);
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s FID: %s Name: %s
", $row[0], $row[1], $row[2]);
}
mysql_free_result($result);
今天关于在c ++项目中使用mysql_query进行多个查询和c++操作mysql数据库的介绍到此结束,谢谢您的阅读,有关c# – 如何使用MysqlDataReader运行多个查询、mysql_db_query 与mysql_query 查询区别、mysql_query — 发送一条 MySQL 查询、mysql_unbuffered_query与mysql_query的区别等更多相关知识的信息可以在本站进行查询。
本文标签: