Subscribe to this list via RSS Blog posts tagged in SQL
FireDACの秘密:最後に挿入された自動生成IDとEnterprise Connectors この記事は Eli M. による Secrets Of FireDac: Last Inserted Auto Generated Id And Enterprise Connectors の抄訳です。  自動インクリメントフィールドがあるテーブルにデータを挿入するとき、一般的にはSQLクエリを使用して新しく作成されたレコードの最後に挿入されたIDを取得します。TFDQueryを使用してINSERTクエリを実行し、続いて、SELECTクエリを実行すれば、新しく挿入された自動インクリメントIDを取得できます。 異なるデータベースには、これを実現するために異なるSQLクエリがあります。 たとえば、MySQLには、LAST_INSERT_ID(例:SELECT LAST_INSERT_ID))という名前で実行できるSELECTクエリ関数があります。 このSELECT文を直接実行するか、FireDAC内蔵の機能を使用することができます。 FireDACには、GetLastAutoGenValueというTFDConnectionコンポーネントから呼び出すことのでき...
Secrets of FireDAC: Pagination With Grids And LiveBindings If you want to display only a range of results from a recordset you can using paging (otherwise known as pagination) to do so. It is a common pattern when doing web development to give the user 20 results for example and then the ability to move to the next page. If you are implementing a REST API in RAD Server you might also implement this functionality instead of delivering 2 million rows for the query you only deliver the first 20 rows and the next 20 can be requested in the next call. Obviou...
Secrets Of FireDac: Last Inserted Auto Generated Id And Enterprise Connectors A common pattern when inserting data into a database table which has an auto increment field set on it is to use an SQL query to select the last inserted ID of the newly created record. Once you use your TFDQuery to run your INSERT query you can run this second query to get the newly inserted auto increment ID. Different databases have different SQL queries to accomplish this. MySQL for example has a SELECT query function that you can run called LAST_INSERT_ID() (example: SELECT LAST_INSERT...
Secrets Of FireDAC: Dynamic Where Clause Using Conditional Substitution Macros If you are using FireDAC and building your SQL queries manually you may be using more verbose code than is needed. FireDAC has a feature called Macros which allows you to do a variable substitution in your SQL query similar to parameter substitution but for raw SQL. However, in addition to macro substitution you can combine it with conditional substitutions which lets you do the real magic. If you are building your SQL query from scratch using strings you probably have some logic that decides w...
Дополнительные утилиты FireDAC Последнее время большую часть рабочего времени пришлось уделить разработке новых примеров для недавно включенной в состав RAD Studio библиотеки компонент для доступа к Google Drive и другим корпоративным ресурсам. Об этом и получившихся приложениях я напишу отдельно в одном из следующих постов. Работа с Google Drive в этой библиотеке основана на компонентах FireDAC и практически все сложности были связаны с корректной настройкой синтаксиса и параметров различных SQL запросов, а также их исполне...

Posted by on in Enterprise
Interbase Generator 応用1[JAPAN] Interbase generator一覧を取得 generatorは “RDB$GENERATORS"ここに入っています。 select * from RDB$GENERATORS; この方法でgenerator一覧の取得が可能です。 1つのgeneratorデータを取得 “gen_id([ジェネレータ名],0)"で取得できますが上記のRDB$GENERATORSを使って取得する事も可能です。 RDB$GENERATORSをselectで呼ぶ事も可能 select gen_id([ジェネレータ名],0) from RDB$DATABASE; --もしくは select rdb$generator_id from RDB$GENERATORS where rdb$generator_name='[ジェネレータ名]'; オラクルの場合DUALが使えるがInterbaseはDUALがありません。RDB$DATABASEを代用します。 generatorを設定 generatorをセットする場合 SET GENERATOR [ジェネレータ名] TO...

Posted by on in Enterprise
Interbase Generatorの使い方[JAPAN]   Interbaseはジェネレータを持っています。 generator 新規作成 create generator sq1 create generatorで"sq1"と言う名称のgeneratorが一つ完成しました。中身は0が入っています。 generatorの番号セット SET generator sq1 TO 1 set generator で“sq1"の中身に1をセットします。 generator呼び出し generatorは自動インクリメントの代わりにも利用できます。 --こんなテーブルを作ったとして create table t1(i1 int); --インサート insert into t1(i1) values(GEN_ID(sq1,1)); GEN_ID()関数を使うと、t1テーブルに1が追加されて"sq1"も1になります。再度上記インサート文を入れるとt1テーブルに追記されますが2が入り"sq1"も2になります。自動インクリメントのような動きが作れます。 他の方法として、ストアドプロシージャ + トリガー...
InterBase 2017 - еще ближе к грандам. В тени шумной, но приятной информационной кампании по поводу выхода новейшей RAD Studio 10.2 осталось не менее знаменательное событие - официальный выход СУБД InterBase 2017. Мне бы хотелось исправить этот недочет и пролить свет на ряд новшеств в этой версии СУБД, которые позволяют говорить об огромном потенциале нашего продукта. Начнем с того, что InterBase является основой ряда решений, которые применяются для создания многозвенных систем и работы с Интернетом Вещей (IoT). Это стало возможным...
Database Application Tools for FireDAC that ship with our products - check them out! I received a comment on one of my blog posts from Wilfred Oluoch who was happy to see our renewed focus on development tools. He also said he would like to see a revamped "Database Desktop" style tool that works with InterBase/SQLite and other databases. Thank you Wilfred. We do have several database tools integrated into the IDE and also as standalone applications. Inside of the IDE you can use the Data Explorer to work with your FireDAC and dbExpress based database connections. Outside of...

Posted by on in Data
Newsgroup Nugget: Row-level locking with FireDAC Here is a recent newsgroup post asking about Row-Level locking using FireDAC to talk to SQL databases. Enjoy! Emery asks: I’m working on a project right now that’s presently using FireDAC to connect to PostgreSql, but we are planning on expanding the possible backends to include MS/SQL, MySQL and Oracle as well (with possibly other, not yet identified, alternatives as well). PostgreSql may or may not be in our long-term plans. One of the single most important requirements that I have is the a...

Check out more tips and tricks in this development video: