C++汉语本读取ADO操作时,无法将string类型的对象转换为_bstr_t

C++中文本读取ADO操作时,无法将string类型的对象转换为_bstr_t
本人要从文本中获取具体的数据并插入到数据库中,获取的代码为:
void connect::get_data()
{
char APPID[50];
char AppVersion[50];
char ProductFunction[50];
char OptionTime[50];
char IP[50];
char OptionTimes[50];
char SessionId[50];
char FunctionLabel[50];
string bstrSQL = "insert into statistic values('";
string tmp;

ifstream get_fi("D:\\project\\database_connection\\20130701_2013070302.txt", ios::nocreate|ios::binary);
while (EOF != get_fi.peek())
{
get_fi.get(APPID, 127, ',');       //从文件从获取字符到字符数组APPID中,当遇到','时或读取了127个字符时终止
get_fi.get(AppVersion, 127, ',');
get_fi.get(ProductFunction, 127, ',');
get_fi.get(OptionTime, 127, ',');
get_fi.get(IP, 127, ',');
get_fi.get(OptionTimes, 127, ',');
get_fi.get(SessionId, 127, ',');
get_fi.get(FunctionLabel, 127, ',');

tmp = tmp.insert(0,APPID);
bstrSQL = bstrSQL + tmp + "', '";
tmp = tmp.insert(0,AppVersion);
bstrSQL = bstrSQL + tmp + "', '";
tmp = tmp.insert(0,ProductFunction);
bstrSQL = bstrSQL + tmp + "', ";
tmp = tmp.insert(0,OptionTime);
bstrSQL = bstrSQL + tmp + ", '";
tmp = tmp.insert(0,IP);
bstrSQL = bstrSQL + tmp + "', '";
tmp = tmp.insert(0,OptionTimes);
bstrSQL = bstrSQL + tmp + "', '";
tmp = tmp.insert(0,SessionId);
bstrSQL = bstrSQL + tmp + "', '";
tmp = tmp.insert(0,FunctionLabel);
bstrSQL = bstrSQL + tmp + "', ')";

_bstr_t varSQL(bstrSQL);
if (!sql_execute(bstrSQL))
{
cout<<"insert fail;\n";
}
}

 get_fi.close();

}

文本的格式为:
109739,3.3.2,200009,2013-7-1 20:49:45,3026778682,1,71495585,连接设备结束
109739,3.3.2,200009,2013-7-1 20:49:45,3026778682,1,71495585,连接成功
109739,3.3.2,200010,2013-7-1 20:54:44,3026778682,1,71495585,
109739,3.3.2,200001,2013-7-1 21:10:45,2846860604,1,76197381, Android;USB\VID_0FCE&PID_5178 
然后在_bstr_t varSQL(bstrSQL);
时出现错误,提示error C2664: “_bstr_t::_bstr_t(const _bstr_t &) throw()”: 不能将参数 1 从“std::string”转换为“const _bstr_t &”
怎么破啊?求大神啊!

另外一个小问题,我创建了一个C++工程,写了一个a.cpp和a.h还有一个main.cpp,在a.h中声明了一个类,头文件也添加了,然后在a.cpp中添加了a.h这个头文件,并实现了类里面的方法。最后在main.cpp中就只添加了一个a.h,然后无法用a.h里面声明的类。这是神马情况??