MFC程序访问数据库不是那么简单的,需要很多初始化代码,建立ADO连接并使用接口。
公司主营业务:网站设计、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出崇明免费做网站回馈大家。
网上很多相关完整资料,搜“VC ADO MYSQL”,灰常多。
下面是一个比较精炼的描述:
1、应用程序的stdafx.h头文件中(也可以在其他合适的地方)包含如下语句。
#import "C://program files//common files//system//ado//msado15.dll"
no_namespace rename ("EOF", "adoEOF")
2、链接数据库
CoInitialize(NULL);
//初始化Com组件
_ConnectionPtr
conPtr; //数据库链接指针
//
conPtr.CreateInstance("ADODB.Connection");
//Connection用于与数据库服务器的链接
conPtr.CreateInstance(__uuidof(Connection));
//Connection用于与数据库服务器的链接另一种方式
try
{
conPtr-ConnectionTimeout = 5; //设置连接时间
//
MySqlTest为数据源名 localhost表示本地
root表示用户名 sa表示密码
//链接方式1,使用这种方式链接时要注意在设置数据源时一定要选择一个数据库
//conPtr-Open("DSN=MySqlTest;server=localhost;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)
//链接方式2采用这种方式链接时在创建数据源时没有必要选择一个数据库 conPtr-Open("DSN=MySqlTest;server=localhost;database=test;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)
}
catch(_com_error e) //捕捉异常
{
AfxMessageBox(e.ErrorMessage());
}
CoUninitialize(); //释放com组件//不知是否有必要
3、访问数据库
_RecordsetPtr recordPtr;//数据集指针
recordPtr.CreateInstance(__uuidof(Recordset));
CString
cmdStr=_T("select name,stuno from
student");//student为表名 该表中有两个字段name(字符型)stuno(int型)
try
{
recordPtr-Open(_variant_t(cmdStr),
conPtr.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch
(_com_error e)
{
AfxMessageBox(e.Description());
}
while
(!(recordPtr-adoEOF))
{//获取记录
CString
name=(CString)recordPtr-GetCollect(_variant_t("name")).bstrVal;
int
no=recordPtr-GetCollect(_variant_t("stuno")).intVal;
recordPtr-MoveNext();
}
recordPtr-Close();//关闭记录集
recordPtr.Release();//释放空间
conPtr-Close();//关闭连接
conPtr.Release();//释放空间
采用命令show create table table_name即可查看MySQL数据库表的建表语句。
mysql中,触发器只能查看,无法修改,如果要修改,只能删除原有的触发器,重新创建触发器,以达到修改的目的。
工具:Navicat Premiu
步骤:
1、正确安装Navicat Premiu,并确保连接到指定的数据库。
2、以连接本地数据库localhost中的badkano数据库为例。
3、点击软件上方的查询-新建查询。
4、先执行SHOW TRIGGERS,查看数据库中的触发器。
5、如果要修改触发器,需要删除掉这个触发器。执行语句为:
DROP TRIGGER t_afterdelete_on_tab1;
6、然后重新创建即可。
查看当前使用的数据库,可使用如下命令
mysql select database(); #使用函数database()
mysql show tables; #列头信息中可看出当前使用的db,格式为:Tables_in_[db_name]
mysql status; #注意结果中的"Current database:"信息
查看系统中有哪些数据库,
mysql show databases;
更换当前使用的数据库,
mysql use db_name;
返回当前数据库下的所有表的名称
mysql show tables;
或者直接用如下命令
mysql show tables from db_name;
查看表结构,可使用如下命令
mysql desc 表名;
mysql describe 表名;
mysql show columns from 表名;
mysql show create table 表名;
或者,
mysql use information_schema
mysql select * from columns where table_name='表名';
15个 MySQL 菜鸟问题
问题1:你如何确定 MySQL 是否处于运行状态?
答案: Debian 上运行命令 service mysql status,在RedHat 上运行命令 service mysqld status。然后看看输出即可。
问题2:如何开启或停止 MySQL 服务?
答案:运行命令 service mysqld start 开启服务;运行命令 service mysqld stop 停止服务。
问题3:如何通过 Shell 登入 MySQL?
答案:运行命令 mysql -u root -p
问题4:如何列出所有数据库?
答案:运行命令 show databases;
问题5: 如何切换到某个数据库并在上面工作?
答案:运行命令 use database_name; 进入名为 database_name 的数据库。
问题6:如何列出某个数据库内所有表?
答案:在当前数据库运行命令 show tables;
问题7:如何获取表内所有 Field 对象的名称和类型?
答案:运行命令 describe table_name;
问题8:如何删除表?
答案:运行命令 drop table table_name;
问题9:如何删除数据库?
答案:运行命令 drop database database-name;
问题10:如何查看表内所有数据?
答案:运行命令 select * from table_name;
问题11:如何从表(比如 oc_users )中获取一个 field 对象(比如 uid)的所有数据?
答案:运行命令 select uid from oc_users;
问题12:假设你有一个名为 ‘xyz’ 的表,它存在多个字段,如 ‘createtime’ 和 ‘engine’。名为 engine 的字段由 ‘Memoty’ 和 ‘MyIsam’ 两种数值组成。如何只列出 ‘createtime’ 和 ‘engine’ 这两列并且 engine 的值为 ‘MyIsam’?
答案:运行命令 select create_time, engine from xyz where engine = ”MyIsam”;
问题13:如何列出表 ‘xrt’ 内 name 域值为 ‘tecmint’,web_address 域值为 ‘tecmint.com’ 的所有数据?
答案:运行命令 select * from xrt where name = “tecmint” and web_address = “tecmint.com”;
问题14:如何列出表 ‘xrt’ 内 name 域值不为 ‘tecmint’,web_address 域值为 ‘tecmint.com’ 的所有数据?
答案:运行命令 select * from xrt where name != "tecmint" and web_address = "tecmint.com";
问题15:如何知道表内行数?
答案:运行命令 select count(*) from table_name;
MySQL 查看表结构简单命令。
一、简单描述表结构,字段类型desc tabl_name;
显示表结构,字段类型,主键,是否为空等属性,但不显示外键。
二、查询表中列的注释信息
select * from information_schema.columns where table_schema = 'db' #表所在数据库
and table_name = 'tablename' ; #你要查的表
三、只查询列名和注释
select column_name,
column_comment from information_schema.columns where table_schema ='db' and
table_name = 'tablename' ;
四、#查看表的注释
select table_name,table_comment from information_schema.tables where table_schema = 'db' and table_name ='tablename'
ps:二~四是在元数据表中查看,我在实际操作中,常常不灵光,不知为什么,有了解的大侠请留印。
五、查看表生成的DDL show create table table_name;