怎么使用mfc的cdatabase类直接执行sql命令
2015-01-28
展开全部
环境:WindowsXP ; VC++6.0 + sp5 1。通过odbc直接执行SQL语句CDatabase mydb;
CRecordset myRecord;
CString strSQL;
CDBVariant cv;try{if ( !mydb.IsOpen() )
mydb.OpenEx("数据库连接字符串",CDatabase::noOdbcDialog); myRecord.m_pDatabase = &mydb;
//直接执行SQL语句,
//注意,SQL语句字符串一定不能以空格开始
strSQL = "SELECT 字段或计算列 FROM 表 WHERE 条件";
//strSQL = " SELECT 字段或计算列 FROM 表 WHERE 条件 "; //这样不行,会报错,查询语句中没有字段
myRecord.Open(CRecordset::snapshot,"需要执行的SQL语句"); int i = 0;
while ( !myRecord.IsEOF() ){myRecord.MoveFirst();
myRecord.GetFieldValue(i,cv); //获得第(i+1)列的数据,数据保存在CDBVariant变量中,不可以直接使用数字0
myRecord.MoveNext();}
myRecord.Close();
mydb.Close();
}上文中的 myRecord.GetFieldValue(i,cv); 语句也可以使用下面的方式实现。
CRecordset myRecord;
CString strSQL;
CDBVariant cv;try{if ( !mydb.IsOpen() )
mydb.OpenEx("数据库连接字符串",CDatabase::noOdbcDialog); myRecord.m_pDatabase = &mydb;
//直接执行SQL语句,
//注意,SQL语句字符串一定不能以空格开始
strSQL = "SELECT 字段或计算列 FROM 表 WHERE 条件";
//strSQL = " SELECT 字段或计算列 FROM 表 WHERE 条件 "; //这样不行,会报错,查询语句中没有字段
myRecord.Open(CRecordset::snapshot,"需要执行的SQL语句"); int i = 0;
while ( !myRecord.IsEOF() ){myRecord.MoveFirst();
myRecord.GetFieldValue(i,cv); //获得第(i+1)列的数据,数据保存在CDBVariant变量中,不可以直接使用数字0
myRecord.MoveNext();}
myRecord.Close();
mydb.Close();
}上文中的 myRecord.GetFieldValue(i,cv); 语句也可以使用下面的方式实现。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询