sql 语句的拼接

std::string CDBTable::getCreateTableSQL(std::string tableName)
{
if (tableName.empty())
{
BOMB_IF(_TableNames.empty(), "table is empty", return "")
tableName = _TableNames[0];
}
BOMB_IF(!containsTable(tableName), "we don't have such a table" + tableName, return "")
std::string SQL= "CREATE TABLE IF NOT EXISTS ";
SQL += tableName;
SQL += " (";
bool needComma = false;
TFiels::iterator iter = _Fields.begin();
for (; iter != _Fields.end(); ++iter)
{
if (needComma == true)
{
SQL += ", ";
}
else
{
needComma = true;
}
SQL += iter->_Name;
SQL += " ";
SQL += iter->_Extra;
}
TRepeatFields::iterator iterRepeat = _RepeatFields.begin();
for (; iterRepeat != _RepeatFields.end(); ++iterRepeat)
{
std::vector<std::string>::iterator itRepeat = iterRepeat->_Fields.begin();
for (; itRepeat != iterRepeat->_Fields.end();++itRepeat)
{
if (needComma == true)
{
SQL +=", ";
}
else
{
needComma = true;
}
SQL += *itRepeat;
SQL += " ";
SQL += iterRepeat->_Extra;
}
}
SQL += ", PRIMARY KEY (";
for (uint32 i = 0; i < _KeyNames.size(); i++)
{
if (i > 0)
{
SQL += ",";
}
SQL += _KeyNames[i];
}
SQL += ")";
if ( !_ForeignKey.empty() && !_ForeignKeyReferences.empty())
{
SQL += ", FOREIGN KEY (";
SQL += _ForeignKey;
SQL += ")";
SQL += "REFERENCES ";
SQL += _ForeignKeyReferences;
}
for (uint32 i = 0; i < _Indexes.size(); i++)
{
SQL += ",INDEX (";
SQL += _Indexes[i];
SQL += ")";
}
SQL += ") ENGINE=INNODB" ;


nlinfo(" create Table sql: %s", SQL.c_str());
return SQL;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值