我在程序中使用C Apis把.sql脚本内容保存到buffer中,(已经开启多行执行功能)
如何调用API:mysql_query()执行,结果返回0,表示执行成功,但是在数据库中发现没有数据.
.sql中有insert命令.如果我在命令行中使用source命令导入.sql那么就正确?我的疑问是:为什么mysql_query执行正确,但是数据库中没有受影响?
如何调用API:mysql_query()执行,结果返回0,表示执行成功,但是在数据库中发现没有数据.
.sql中有insert命令.如果我在命令行中使用source命令导入.sql那么就正确?我的疑问是:为什么mysql_query执行正确,但是数据库中没有受影响?
解决方案 »
- 一段MSSQL的表记录批量更新的,如何写成MYSQL的语句 谢谢 有详细的MSSQL的建表、模拟数据、模拟结果的SQL示例
- 一个虚拟主机带Mysql数据库,如何写个API可以实现对这个数据库的增删改查呢
- mysql的c api中有没有获得语句的类型(select一类,insert,update为另一类)的函数
- 请问个SQL语句应该如何优化?
- sql查询问题 分组查询
- MySQL中使用load data infile的汉文问题
- 如何限制mysql数据库的大小,有什么简单的办法 ^^^^^^^^^^^^^^^^^^
- 我在Windows2000 server下连不上Linux下的mysql...急啊。
- MYSQL是文件型的吗?
- MySQL 怎么做 二维统计?如何 将列内的数据求和,行内的数据求和
- mysql 主从数据库同步不及时的问题
- mysql連接不上
mysql -u -p <sql文件
C中可以把命令读入到字符串,然后直接执行。
if (mysql_real_connect (mysql, host_name, user_name, password,
db_name, port_num, socket_name, CLIENT_MULTI_STATEMENTS) == NULL)
我的数据库脚本.sql语句为:USE yuu3;delimiter ;;
DROP TABLE IF EXISTS yuu_Version;;
CREATE TABLE yuu_Version
(
Date DATETIME,
Version VARCHAR(40) NOT NULL,
PRIMARY KEY(Date)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;;DROP PROCEDURE IF EXISTS up_SelVersion;;
CREATE PROCEDURE up_SelVersion()
BEGIN
SELECT * FROM Version;
END ;;DROP PROCEDURE IF EXISTS up_AddVersion;;
CREATE PROCEDURE up_AddVersion(IN in_Date DATETIME,IN in_Version VARCHAR(40))
BEGIN
INSERT INTO yuu_Version(Date,Version) VALUES(in_Date, in_Version);
END ;;
delimiter ;
CREATE PROCEDURE up_AddVersion(IN in_Date DATETIME,IN in_Version VARCHAR(40))
BEGIN
INSERT INTO yuu_Version(Date,Version) VALUES(in_Date, in_Version);
END ;;哪怕最后自己+2行
print "本段代码执行成功!"
select "本段代码执行成功!"我做数据库版本发布最讨厌没有日志的东西
一般有70个SQL文件,要发布到24个数据库上,
我肯定写批处理个脚本执行,最后看日志;
一看出现400个空日志文件,还有回过头来检查SQL
if (mysql_select_db(&m_MySql, _T("yuu3")))
{
return NULL;
}
CString FileContent = _T("insert into yuu_version(Date, Version) values('2013-4-22', 'v1.0.1');");
// //一次性执行脚本中的内容.
if (mysql_query(&m_MySql, FileContent))
{
return false;
}执行结果有发现数据库上有刚刚插入的值.如果代码如下://测试
CString FileContent = _T("use yuu3; insert into yuu_version(Date, Version) values('2013-4-22', 'v1.0.1');");
// //一次性执行脚本中的内容.
if (mysql_query(&m_MySql, FileContent))
{
return false;
}发现执行调用mysql_query成功,但是数据库中没有发现有值插入,看来可能只是执行use yuu3;这条语句就返回,没有执行后面的插入语句.
如果代码中有的SQL语句如下:use yuu3; insert into yuu_version(Date, Version) values('2013-4-22', 'v1.0.1');"上面的代码能执行正确,
如果更改默认行的结束符,如:use yuu3; delimiter ;; insert into yuu_version(Date, Version) values('2013-4-22', 'v1.0.1');; delimiter ;"我把delimiter;;去掉,结束的delimiter;去掉就可以正常执行了?
什么原因?奇怪,难道不能自行设置行的结束符?
考虑5楼的建议吧
进行判断
我也是去掉了 deimiter 就可以了.