Skip to content

Instantly share code, notes, and snippets.

@greghelton
Created December 27, 2011 03:33
Show Gist options
  • Save greghelton/1522639 to your computer and use it in GitHub Desktop.
Save greghelton/1522639 to your computer and use it in GitHub Desktop.
ANT: Project for Managing a SQLite Database
<project name="sqlite" basedir="." default="echo">
<property name="sqldriver.jar" value="${user.home}/dev/bin/sqlite/sqlitejdbc-v056.jar"/>
<property name="db.name" value="programmers.db"/>
<property name="url" value="jdbc:sqlite:data"/>
<property name="driver" value="org.sqlite.JDBC"/>
<property name="userid" value="root"/>
<property name="password" value="root"/>
<target name="echo">
<echo>The targets that can be run are: </echo>
<echo>ant sqlcreate</echo>
<echo>ant sqlschema</echo>
<echo>ant sqlpopulate</echo>
<echo>ant sqlselect</echo>
<echo>ant sqldrop</echo>
</target>
<target name="sqlschema">
<sql
driver="${driver}"
url="${url}/${db.name}"
userid="${userid}"
password="${password}"
print="yes"
classpath="${sqldriver.jar}">
select * from sqlite_master
</sql>
</target>
<target name="sqldrop">
<sql
driver="${driver}"
url="${url}/${db.name}"
userid="${userid}"
password="${password}"
print="yes"
classpath="${sqldriver.jar}">
drop VIEW ProjProg;
drop INDEX Programmer_idx;
drop INDEX Project_idx;
drop TABLE ProjectProgrammer;
drop TABLE Programmer;
drop TABLE Project;
</sql>
</target>
<target name="sqlcreate">
<sql
driver="${driver}"
url="${url}/${db.name}"
userid="${userid}"
password="${password}"
print="yes"
classpath="${sqldriver.jar}">
create table Project (id INTEGER PRIMARY KEY, short_description varchar(30), long_description varchar(120));
create index Project_idx on Project (short_description);
create table Programmer (id INTEGER PRIMARY KEY, full_name varchar(100));
create index Programmer_idx on Programmer (full_name);
create table ProjectProgrammer (project_id INTEGER, programmer_id INTEGER);
create view ProjProg as select Project.short_description, Programmer.full_name
from Programmer
join ProjectProgrammer
on Programmer.id = ProjectProgrammer.programmer_id
join Project
on ProjectProgrammer.project_id = Project.id;
</sql>
</target>
<target name="sqlpopulate" >
<sql
driver="${driver}"
url="${url}/${db.name}"
userid="${userid}"
password="${password}"
print="yes"
classpath="${sqldriver.jar}">
insert into Programmer (full_name) values('Greg Helton');
insert into Programmer (full_name) values('Yehuda Katz');
insert into Programmer (full_name) values('Bob Martin');
insert into Project (short_description, long_description) values('whack-a-mole', 'good name for a project with no unit tests');
insert into ProjectProgrammer values(1,1);
insert into ProjectProgrammer values(1,2);
insert into ProjectProgrammer values(1,3);
</sql>
</target>
<target name="sqlselect" >
<sql
driver="${driver}"
url="${url}/${db.name}"
userid="${userid}"
password="${password}"
print="yes"
classpath="${sqldriver.jar}">
select * from Project;
select * from Programmer;
select *
from Programmer
join ProjectProgrammer
on Programmer.id = ProjectProgrammer.programmer_id
join Project
on ProjectProgrammer.project_id = Project.id;
select * from ProjProg;
</sql>
</target>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment