qtsql語句
『壹』 QT中使用sql語句查詢時,表名通過一個參數來傳遞的話,這個sql語句怎麼寫
select * from lineedit into var
lineedit為表名,var為參數,
『貳』 QT的.pro文件里了怎麼添加QT+=sql語句,在那個地方添加
另起一行,或者直接用core gui sql也行
『叄』 QT中 sql語句 where如何加int變數
u如果是字元型,能代入么?
『肆』 qt中的sql能讀取對方的oarcle資料庫信息嗎
QT SQL 變數值 條件查詢 插入數據
(本文只是總結網路上的教程)
在操作資料庫時
SQL語句中難免會用到變數
比如
在條件值已知的情況下
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)SELECT * FROM Persons WHERE FirstName='Bush'
在條件值是變數的情況下
INSERT INTO table_name (列1, 列2,...) VALUES (變數1, 變數2,....)SELECT * FROM Persons WHERE FirstName='變數'
或者SELECT * FROM Persons WHERE 變數='變數'
方法據我所知有兩種
1:用query的綁定特性來做
2:利用字元串特性,來組合SQL字元串(+,&,arg())詳情可參考qstring,string用法(提示:qstring在執行sql語句時相當有用,當深入研究之http://developer.qt.nokia.com/doc/qt-4.8/qstring.htmlhttp://www.kuqin.com/qtdocument/qstring.htmlhttp://caterpillar.onlyfun.net/Gossip/Qt4Gossip/QString.htmlhttp://ibeyond.blog.51cto.com/1988404/373948網路文庫也有個很好的官方ppt 講的QT 數據類型 也可以參考之)
第一步:
簡單介紹下qstring常用操作
1-----------------組合1-----
把str添加到字元串中並且返回結果的引用。
string = "Test";
string.append( "ing" ); // string == "Testing"等於operator+=()。
2-------------------組合2-------
QString firstName( "Joe" );
QString lastName( "Bloggs" );
QString fullName;
fullName = QString( "First name is '%1', last name is '%2'" ).arg( firstName )
.arg( lastName );
// fullName == First name is 'Joe', last name is 'Bloggs'
QString str;
str = QString( "Decimal 63 is %1 in hexadecimal" ).arg( 63, 0, 16 );
// str == "Decimal 63 is 3fin hexadecimal"3------------------組合3--------+,+=
QString str = "1234";
cout << &str << endl;
str += str;
cout << qPrintable(str) <<endl;
str = str + "5678";
cout << qPrintable(str) <<endl;
4----------------檢測是否為空
QString a( "" );
a.isEmpty(); // 真
a.isNull(); // 假
QString b;
b.isEmpty(); // 真
b.isNull(); // 真
如果它不是零字元串,返回真,否則返回假。
QString name =getName();
if ( !name )
name = "Rodney";
5------------------轉換
int 轉 QString
int a=10;
QString b;
b=QString::number(a)
QString 轉int
QString a="120"
int b;
b=a.toInt()
第二步:
回顧一下QT下操作,顯示資料庫的方法
底層資料庫:SQLITE,MYSQL,MSSQL,ACCESS,ORACLE…….
中間層處理:QUERY,QUERYMODEL,TABLEMODEL,RetinoalTABLEMODEL頂層顯示:DEBUG(MSGBOX),TABLEVIEW,TREEVIEW,TABLEWIDGET,COMBOX第三步:
下面總結下在不同中間層的情況下,待變數SQL語句的執行方法這里只介紹查詢和插入的方法,關於更新方法類似1----------------------使用query做中間層
SQL查詢:
SQL插入:
2----------------------使用querymodel做中間層查詢:
插入:
3----------------------使用tablemodel做中間層查詢:
插入:
4----------------------使用T-tablemodel做中間層查詢:
插入:
1----------------------使用query做中間層(綁定或組合SQL字元串)SQL查詢:(主要是用的綁定,其他捆綁方法可查詢幫助文檔,或者參考插入的sql語句格式)QSqlQuery query;
query.prepare("select name from student where id = ?");int id = ui->linetext->value(); //從界面獲取id的值query.addBindValue(id); //將id值進行綁定
query.exec();
SQL插入:
(ODBC)
QSqlQuery query;
query.prepare("insert into student (id, name) values (:id, :name)");query.bindValue(0, 5);
query.bindValue(1, "sixth");
query.exec();
或者用名稱進行索引
query.prepare("insert into student (id, name) values (:id, :name)");query.bindValue(":id", 5);
query.bindValue(":name", "sixth");
query.exec();
(ORACLE)
query.prepare("insert into student (id, name) values (?, ?)");query.bindValue(0, 5);
query.bindValue(1, "sixth");
query.exec();
或者省去索引
query.prepare("insert into student (id, name) values (?, ?)");query.addBindValue(5);
query.addBindValue("sixth");
query.exec();
批量插入:
QSqlQuery q;
q.prepare(「insert into student values (?, ?)」);QVariantList ints; ints << 10 << 11 << 12 << 13;q.addBindValue(ints);
QVariantList names; names << 「xiaoming」 << 「xiaoliang」 << 「xiaogang」 <<QVariant(QVariant::String); //最後一個是空字元串,應與前面的格式相同q.addBindValue(names);
if (!q.execBatch()) //進行批處理,如果出錯就輸出錯誤qDebug() << q.lastError();
2----------------------使用querymodel做中間層(組合SQL字元串法可參考3)QString name = userNameLine->text();
QString passwd = userPwdLine->text();
QString sql = "select name, password from users where name = '"+ name + "'and password ='" + passwd + "'";查詢:
QSqlQueryModel *model = new QSqlQueryModel;model->setQuery(「select * from student」);插入:
3----------------------使用tablemodel做中間層(組合sql字元串法)QString name = userNameLine->text();
QString passwd = userPwdLine->text();
QString sql = "select name, password from users where name = '"+ name + "'and password ='" + passwd + "'";查詢
QSqlTableModel *model = new QSqlTableModel;model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);model->select();
model->removeColumn(0); // don't show the IDmodel->setHeaderData(0, Qt::Horizontal, tr("Name"));model->setHeaderData(1, Qt::Horizontal, tr("Salary"));QTableView *view = new QTableView;
view->setModel(model);
view->show();
條件查詢:
QString name = ui->lineEdit->text();
model->setFilter(QObject::tr(「name = 『%1′」).arg(name)); //根據姓名進行篩選model->select(); //顯示結果
分類
model->setSort(0,Qt::DescendingOrder);
model->select();
插入:
int rowNum = model->rowCount(); //獲得表的行數int id = 10; model->insertRow(rowNum); //添加一行model->setData(model->index(rowNum,0),id);4----------------------使用Relationaltablemodel做中間層(組合SQL字元串法)查詢:
插入:
『伍』 如何用for循環在qt中實現sql資料庫的多行插入
debug時把sql語句復制出來,在資料庫鏈接工具中(如plsql,navicat等)執行一次,可能是你的value中設置了非空欄位,也有可能是你的資料庫策略不允許插入空.
『陸』 qt連接sql資料庫的方法。
using
System;
using
System.Data.SqlClient;
namespace
_09_01
{
class
Class_09_01
{
public
static
void
Main(String[]
args)
{
//
連接字元串,讀者可以根據自己情況設置不同的值
string
strConn
=
"Initial
Catalog=Northwind;Data
Source=(local);User
ID=sa;Password=sa";
//
SqlConnection
對象
SqlConnection
conn
=
new
SqlConnection();
conn.ConnectionString
=
strConn;
try
{
//
打開資料庫連接
conn.Open();
Console.WriteLine("成功連接到資料庫!");
Console.WriteLine("數據源:{0}",
conn.DataSource);
Console.WriteLine("資料庫名:{0}",
conn.Database);
Console.WriteLine("客戶端名:{0}",
conn.WorkstationId);
//
在用完了資料庫連接之後記得關閉!
conn.Close();
}
catch
(Exception
e)
{
Console.WriteLine("無法連接到資料庫!報告異常:");
Console.WriteLine(e.Message);
}
}
}
}
『柒』 QT查詢mysql資料庫中表格是否存在怎麼操作
1、sql語句判斷資料庫表是否存在:
sql:select * from user_all_tables where table_name='tableName'
如果結果為空則表示不存在,如何結果不為空則表示存在;
2、java如何判斷資料庫表是否存在
可以利用上面的sql,執行獲取結果,相應的java代碼如下:
String helperName= delegator.getGroupHelperName("com.asiainfo");
SQLProcessor sqlProcessor= new SQLProcessor(helperName);
String sql = "select * from user_all_tables where table_name='"+table+"'";
ResultSet rsTables =sqlProcessor.executeQuery(sql);
if(rsTables.next()){
Debug.logWarning("table:"+table+" exists", mole);
}else{
Debug.logWarning("table:"+table+" does not exist", mole);
}
『捌』 QT的sql語句出了問題(sqlite資料庫),求解答
你檢查下sql語句中的雙引號和單引號有沒有錯誤
『玖』 qt中的sql能讀取對方的oarcle資料庫信息嗎
QT SQL 變數值 條件查詢 插入數據
(本文只是總結網路上的教程)
在操作資料庫時
SQL語句中難免會用到變數
比如
在條件值已知的情況下
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)SELECT * FROM Persons WHERE FirstName='Bush'
在條件值是變數的情況下
INSERT INTO table_name (列1, 列2,...) VALUES (變數1, 變數2,....)SELECT * FROM Persons WHERE FirstName='變數'
或者SELECT * FROM Persons WHERE 變數='變數'
方法據我所知有兩種
1:用query的綁定特性來做
2:利用字元串特性,來組合SQL字元串(+,&,arg())詳情可參考qstring,string用法(提示:qstring在執行sql語句時相當有用,當深入研究之http://developer.qt.nokia.com/doc/qt-4.8/qstring.htmlhttp://www.kuqin.com/qtdocument/qstring.htmlhttp://caterpillar.onlyfun.net/Gossip/Qt4Gossip/QString.htmlhttp://ibeyond.blog.51cto.com/1988404/373948網路文庫也有個很好的官方ppt 講的QT 數據類型 也可以參考之)
『拾』 qt連接sql資料庫的方法。
using System; using System.Data.SqlClient; namespace _09_01 { class Class_09_01 { public static void Main(String[] args) { // 連接字元串,讀者可以根據自己情況設置不同的值 string strConn = "Initial Catalog=Northwind;Data Source=(local);User ID=sa;Password=sa"; // SqlConnection 對象 SqlConnection conn = new SqlConnection(); conn.ConnectionString = strConn; try { // 打開資料庫連接 conn.Open(); Console.WriteLine("成功連接到資料庫!"); Console.WriteLine("數據源:{0}", conn.DataSource); Console.WriteLine("資料庫名:{0}", conn.Database); Console.WriteLine("客戶端名:{0}", conn.WorkstationId); // 在用完了資料庫連接之後記得關閉! conn.Close(); } catch (Exception e) { Console.WriteLine("無法連接到資料庫!報告異常:"); Console.WriteLine(e.Message); } } } }