Qt 에서 Sql 을 연동한 후 사용법은 매우 간단하다.
먼저 데이터베이스를 생성해야 한다.
아래 코드를 보면 QSqlDatabae 변수인 m_LocalDB 에 Database 를 추가한다.
(Database 를 가져올 때도 마찬가지로 사용됨)
m_LocalDB = QSqlDatabase::addDatabase(sql, dbName); // QSQLITE (SQL 타입)
그리고 Database 의 이름(경로)를 지정한다.
준비는 끝났고, Database 를 open 해본다. 존재하면 열릴 것이고, 존재하지 않으면 열리지 않을 것이다.
QSqlQuery query(m_LocalDB); // DB 에 query 명령을 보내기위한 변수를 선언
query.exec("create table 이름" "(id integer primary key," "buildingname varchar(30)," "streetarea integer)");
위와 query 를 실행하면 table 이 정해진 이름으로 생성되고, id는 주키값을 갖는 칼럼, buildingname 은 30개까지 입력가능한 문자열, streetarea 는 정수값 칼럼이된다.
주의할 점은 테이블 생성할대 괄호()와 ", 등을 잘 보고 넣어줘야한다. 에러가 나지 않고 정상동작하는 것처럼 보이지만 실제 값을 가져와보면 값이 안들어가거나 값이 없다.
QString sql = "QSQLITE";
QString dbName = "LocalDB";
m_LocalDB = QSqlDatabase::addDatabase(sql,dbName);
m_LocalDB.setDatabaseName(DB_FILE_PATH); //path 를 넣어주면 됨
if(!m_LocalDB.open())
{
qDebug()<<"local Database Setting Open failed!";
QSqlDatabase::removeDatabase("LocalDB");
}
if(m_LocalDB.isValid())
{
qDebug()<<"Database is valid";
}
else
{
qDebug()<<"Database is not valid";
}
QSqlQuery query(m_LocalDB);
query.exec("create table realestate"
"(id integer primary key, "
"buildingname varchar(30), "
"streetarea integer, "
"streetarea2 integer, "
"depositmin integer, "
"depositmax integer, "
"maintanancecost integer, "
"monthlyrentmin integer, "
"monthlyrentmax integer, "
"lessor varchar(30), "
"tenant varchar(30), "
"note varchar(300))");
위에 처럼 테이블을 생성했으면 값을 넣고 가져와야한다.
데이터베이스 명령어를 조금 안다면 쉽게 이해하고 사용할 수 있다.
테이블에 값을 넣을 때는 INSERT 명령어를 사용한다.
아래 Qt Documentation 에 나오는 설명처럼 query 명령어를 사용해서 값을 직접 넣거나, 변수를 통해서 넣을 수 있다. (위는 직접, 아래는 변수 or 직접할당된 곳에넣음)
테이블에 있는 값을 검색하고 싶을 때는 SELECT 명령어를 사용하면된다.
query.exec("select * from realestate");
위처럼 검색하면 realestate 라는 테이블에 있는 데이터를 전부 가져오는 것이다.
그리고 가져온 값을 query.next() 함수를 통해서 한줄씩 가져올 수 있다.
while(query.next())
{
qDebug() << query.value(0).toInt() << query.value(1).toString() << query.value(2).toInt() << query.value(3).toInt()
<< query.value(4).toInt() << query.value(5).toInt() << query.value(6).toInt() << query.value(7).toInt()
<< query.value(8).toInt() << query.value(9).toString() << query.value(10).toString() << query.value(11).toString();
//검색한 내용... 끝까지 읽어드려 처리하는 부분
}
'Qt' 카테고리의 다른 글
[Qt] QTableWidget (1) | 2016.08.01 |
---|---|
[Qt] SELECT 명령어 사용 (WHERE) (0) | 2016.08.01 |
[Qt] 디자이너에서 탭 순서 바꾸기(change tab order) (0) | 2016.07.31 |
[Qt] Sql 연동하기 (0) | 2016.07.29 |
[Qt] Dialog 종료 (0) | 2016.07.29 |
댓글