一. 使用Navicat工具操作数据库
工具下载地址:
有一个可连接使用的数据库 打开工具"navicat.exe"工具, 新建一个数据库连接
如:新建一个test连接鼠标双击即可连接数据库, 然后就可以在连接下新建数据库
建完数据库, 开始新建表
在一个数据库连接中可以建多个表
下面通过数据库语句来增加删除和修改数据库内容
二. 数据库基本操作语句
1.修改数据库中一条内容:
UPDATE MANAGER_INFO SET PassWord = ‘222’,AuthorizationDateTime = ‘222’,Mobile = ‘222’ WHERE ManagerName='test111’
2. 删除表中一条内容
DELETE FROM MANAGER_INFO WHERE ManagerName='test111’
3. 增加表中一条内容:
INSERT MANAGER_INFO (ManagerName,PassWord,AuthorizationDateTime,Mobile) VALUES (‘111’,‘111’,‘111’,‘111’)
4.查表:查找表MANAGER_INFO中的ManagerName这一列
SELECT ManagerName FROM MANAGER_INFO
5. 或者查找一行信息:
select * from MANAGER_INFO where ManagerName=‘1111’ 其中 * 表明查询表中记录的所有字段
6.按照条件查找信息
(1). SELECT * FROM USER_DEVICE order by Uid limit 1,5; 在第一条开始查找5条信息; 通过控制开始查找的地方,实现按页查找
举例说明:
从第0条开始查找, 每10条一页 : SELECT * FROM USER_DEVICE order by Uid limit 010,10; 这是第一页的内容;
那么下一页的内容查找为 :SELECT * FROM USER_DEVICE order by Uid limit 110,10; 这是第二页内容
第三页内容查找: SELECT * FROM USER_DEVICE order by Uid limit 210,10;
数据库语句中不支持 "110"这样的操作,必须是具体的数据,这里只是总结说明下如何去查找一页内容(7) distinct 查找不重复记录;就是多个相同记录只算一条
如:Select distinct(UnitBuildingNum) From USER_DEVICE Where AreaInfo = 'ABCD’AND BuildingNum = ‘0’;
再试一次
Select distinct(UnitBuildingNum) From USER_DEVICE Where AreaInfo = 'ABCD’AND BuildingNum = ‘1’;
三. QT程序中数据库语句操作
QT中类QSqlDatabase用于创建数据库连接;不要重复的创建连接
类QSqlQuery用于SQL语句实现与数据库的交互
1. QT中连接上数据库只需把这条数据库语句通过字符串的形式发送给数据库即可----- 更新表
UPDATE MANAGER_INFO SET PassWord = ‘123456’ WHERE ManagerName=‘AA’
把表MANAGER_INFO中字段ManagerName为AA的密码字段改为123456
/***************************************************更新表SQL语句*********************************************************
UPDATE MANAGER_INFO SET ManagerName = 'qt',PassWord = 'qt' WHERE ManagerName='qq' AND PassWord = 'qq'
修改表 MANAGER_INFO 中的 ManagerName和PassWord字段为qt WHERE 条件是字段原始信息为 ManagerName='qq' AND PassWord = 'qq'
UPDATE MANAGER_INFO SET ManagerName = '111',PassWord = '111',Mobile='111' WHERE ManagerName='aaa'
修改表 MANAGER_INFO 中的 ManagerName和PassWord和Mobile字段为111 WHERE 条件是字段原始信息为 ManagerName='qq'
*****************************************************************************************************************/
//更新表 ManagerName 修改表中的数据
void QSqlTool:: UpdateMANAGER_INFO(QString ManagerName,QString PassWord, QString AuthorizationDateTime,QString Mobile,QString Adress, QString OldManagerName)
{
if(!DB.isOpen())
{
OpenDatabase();
}
if(DB.isOpen())
{
QSqlQuery query;
QString sql = tr("UPDATE MANAGER_INFO SET ManagerName = '%1',PassWord = '%2',AuthorizationDateTime = '%3',Mobile = '%4',Adress = '%5' WHERE ManagerName='%6'").arg(ManagerName).arg(PassWord).arg(AuthorizationDateTime).arg(Mobile).arg(Adress).arg(OldManagerName);//数据库语句拼接
query.exec(sql);//执行此数据库语句
}
else
{
qDebug() << "opened error";
}
}
2. 查找表MANAGER_INFO 中的某个字段,然后返回这个字段的全部内容
SELECT ManagerName FROM MANAGER_INFO 查找表MANAGER_INFO中字段ManagerName的全部内容
/************* 查表:SELECT ManagerName FROM MANAGER_INFO ****************/
QStringList QSqlTool:: SelectMANAGER_INFO_Name()//查询注册的用户
{
//QString name;
QStringList namelist;//储存所有名字
if(!DB.isOpen())
{
OpenDatabase();
}
if(DB.isOpen())
{
QSqlQuery query("SELECT ManagerName FROM MANAGER_INFO");//查找表MANAGER_INFO中的ManagerName这一列 SELECT ManagerName FROM MANAGER_INFO
while(query.next())//query指向下一条记录,每执行一次该函数,便指向相邻的下一条记录。
{//QStringList QList<QString>
//1. 过度下在追加到namelist中
//name = query.value(0).toString();//查询表MANAGER_INFO字段
// namelist<<name;//把获取的名字追加到字符串链表中
//2. 直接追加到namelist中
namelist<<query.value(0).toString();//查询表MANAGER_INFO字段
// qDebug()<<"namelist="<<namelist;
}
return namelist;
}
else
{
qDebug() << "opened error";
}
}
3. 增加表MANAGER_INFO一条内容:
INSERT MANAGER_INFO (ManagerName,PassWord,AuthorizationDateTime,Mobile,Adress) VALUES (‘A’,‘A’,‘A’,‘A’,‘A’)
增加这5个字段内容依次全部为A
/*向表MANAGER_INFO中添加一条内容*/
void QSqlTool:: InsertAddrMANAGER_INFO(QString ManagerName,QString PassWord, QString AuthorizationDateTime,QString Mobile,QString Adress)
{
if(!DB.isOpen())
{
OpenDatabase();
}
if(DB.isOpen())
{
QSqlQuery query;
QString sql = tr("INSERT MANAGER_INFO (ManagerName,PassWord,AuthorizationDateTime,Mobile,Adress) VALUES ('%1','%2','%3','%4','%5')").arg(ManagerName).arg(PassWord).arg(AuthorizationDateTime).arg(Mobile).arg(Adress);//组织数据库执行语句
query.exec(sql);//执行sql语句
}
else
{
qDebug() << "opened error";
}
}
4. 删除MANAGER_INFO表中一条内容:
DELETE FROM MANAGER_INFO WHERE ManagerName=‘A’ 删除表MANAGER_INFO中字段ManagerName中为A 的这条内容
void QSqlTool::DeleteManagerName(QString ManagerName)
{
if(!DB.isOpen())
{
OpenDatabase();
}
if(DB.isOpen())
{
QSqlQuery query;
QString sql = tr("DELETE FROM MANAGER_INFO WHERE ManagerName='%1'").arg(ManagerName);
query.exec(sql);
}
else
{
qDebug() << "opened error";
}
}
5. 连接数据库:
//数据库打开接口---连接数据库
#define SqlHostName "127.0.0.1"
#define SqlPort 3306
#define SqlDatabaseName "database"
#define SqlUserName "admin"
#define SqlPassword "123456"
void QSqlTool::OpenDatabase()//测试数据库链接状态
{
DB = QSqlDatabase::addDatabase("QMYSQL");
DB.setHostName(SqlHostName);//安装mysql服务器的ip
DB.setPort(SqlPort);//数据库端口默认3306
DB.setDatabaseName(SqlDatabaseName);//数据库的名字
DB.setUserName(SqlUserName);//数据库的用户名
DB.setPassword(SqlPassword);//数据库用户名的密码
if(DB.open()) qDebug() << SqlDatabaseName " opened successful";
else qDebug() << "opened error";
}
**6. 关闭数据库的连接**
void QSqlTool::CloseDatabase()
{
if(DB.open())
{
DB.close();
}
}
注意地方:删除时区分大小写