65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 DroidScript App 进行移动应用开发

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.85/5 (4投票s)

2017年3月14日

CPOL

3分钟阅读

viewsIcon

20390

downloadIcon

518

本文演示了如何使用 DroidScript App 为 Android 手机开发数据库应用程序。

  

引言

通过这篇文章,我想向 CodeProject 的读者介绍 DroidScript App。 DroidScript 是一款很棒的 App,使用它可以非常容易地创建各种类型的 App,例如数据库 App、消息 App、邮件 App 等。 此外,还可以轻松访问移动设备上的各种传感器,如加速计、指南针、摄像头、GPS 等。 DroidScript App 带有内置编辑器,可以在设备内创建 App。 它还允许您通过按下顶部的小箭头按钮,在 PC 上使用 WiFi 编辑器在浏览器中创建或编辑脚本。

  

本文展示了如何使用 DroidScript Android App 为 Android 平台开发 App。 此演示 App 是一个简单的数据库 App,可在设备的 SQLite 数据库中插入、更新、删除和查询数据。

背景

此 App 创建一个名为 empdb 的示例数据库。 然后创建一个名为 emp 的表,该表具有 empid、empname 和 salary 列。 有六个按钮:添加、显示、显示全部、编辑、删除和删除全部,用于对数据库表执行常见操作。

使用代码

OnStart() 函数在应用程序开始运行时自动执行。 App 的用户界面可以在 OnStart() 函数中编码。 内置的 app 对象代表当前 App。 App 对象的 CreateLayout() 函数可用于创建布局。 SetBackGradient() 函数可用于使用两种颜色为 App 创建背景渐变。 布局的 AddChild() 函数将控件添加到布局。 OnStart() 函数中的以下代码创建一个界面,用于在文本字段中接受员工 ID。

mainLayout=app.CreateLayout("linear","Vertical,FillXY");
mainLayout.SetBackGradient("#ff0000ff","#ffff0000");
empidLayout=app.CreateLayout("linear","Horizontal");
empidLabel=app.CreateText("Emp ID: ",0.5,0.1);
empidText=app.CreateTextEdit("",0.5,0.1);
empidLayout.AddChild(empidLabel);
empidLayout.AddChild(empidText);
mainLayout.AddChild(empidLayout);

布局也可以彼此嵌套以创建复杂的布局。 例如,以下代码在主布局中水平排列三个按钮。

btnLayout1=app.CreateLayout("linear","Horizontal");
btnAdd=app.CreateButton("Add",0.25,0.1);
btnAdd.SetOnTouch(btnAdd_OnTouch);
btnDisplay=app.CreateButton("Display",0.25,0.1);
btnDisplay.SetOnTouch(btnDisplay_OnTouch);
btnDisplayAll=app.CreateButton("Display All",0.25,0.1);
btnDisplayAll.SetOnTouch(btnDisplayAll_OnTouch);
btnLayout1.AddChild(btnAdd);
btnLayout1.AddChild(btnDisplay);
btnLayout1.AddChild(btnDisplayAll);
mainLayout.AddChild(btnLayout1);

按钮对象的 SetOnTouch() 函数指定按钮的单击事件的事件处理程序。

添加所有控件后,最后可以使用 App 的 AddLayout() 函数将主布局添加到 App,如下所示

app.AddLayout(mainLayout);

可以使用 App 的 OpenDatabase() 方法创建或打开数据库(如果它已经存在)。 数据库对象的 ExecuteSql() 方法可用于在数据库上执行任何 SQL 命令。 以下代码创建或打开一个名为 empdb 的数据库,如果 emp 表不存在,则创建该表。

db=app.OpenDatabase("empdb");
db.ExecuteSql("create table if not exists emp(empid integer primary key,empname text,salary integer)");

可以使用 ExecuteSql() 函数在表上执行其他 DML 操作和查询。

以下代码插入一条新记录,将字段值作为参数并指定错误事件处理程序

function btnAdd_OnTouch()
{
    db.ExecuteSql("insert into emp values(?,?,?)",[empidText.GetText(),empnameText.GetText(),empsalaryText.GetText()],null,OnError);
    empidText.SetText("");
    empnameText.SetText("");
    empsalaryText.SetText("");
    empidText.Focus();
}

function OnError(msg)
{
    app.Alert("Error: "+msg);
}

类似地,可以根据主键查询记录,如下所示

function btnDisplay_OnTouch()
{
    db.ExecuteSql("select * from emp where empid=?",[empidText.GetText()],OnResult);
}

function OnResult(result)
{
    if(result.rows.length==0)
    {
        app.Alert("Invalid Emp ID");
        empnameText.SetText("");
        empsalaryText.SetText("");
    }
    else
    {
        empnameText.SetText(result.rows.item(0).empname);
        empsalaryText.SetText(result.rows.item(0).salary);
    }
}

可以检索所有记录并在警报对话框中显示,如下所示

function btnDisplayAll_OnTouch()
{
    db.ExecuteSql("select * from emp",[],OnAllResults);
}

function OnAllResults(result)
{
    if(result.rows.length==0)
    {
        app.Alert("No records found");
    }
    else
    {
        var records="Employee Records\n";
        records+="-----------------------------------------------------\n";
        for(var ctr=0;ctr<result.rows.length;ctr++)
        {
            records+="Emp Id: "+result.rows.item(ctr).empid+"\n";
            records+="Name: "+result.rows.item(ctr).empname+"\n";
            records+="Salary: "+result.rows.item(ctr).salary+"\n";
            records+="-----------------------------------------------------\n";
        }
        app.Alert(records);
    }
}

可以编辑记录,如下所示

function btnEdit_OnTouch()
{
    db.ExecuteSql("select * from emp where empid=?",[empidText.GetText()],OnEditResult);
}

function OnEditResult(result)
{
    if(result.rows.length==0)
    {
        app.Alert("Invalid Emp Id");
    }
    else
    {
        db.ExecuteSql("update  emp set empname=?,salary=? where empid=?",[empnameText.GetText(),empsalaryText.GetText(),result.rows.item(0).empid]);
        app.Alert("Record edited");
        empidText.SetText("");
        empnameText.SetText("");
        empsalaryText.SetText("");
    }
}

以下代码删除指定的员工的 ID 的详细信息

function btnDelete_OnTouch()
{
    db.ExecuteSql("select * from emp where empid=?",[empidText.GetText()],OnDeleteResult);
}

function OnDeleteResult(result)
{
    if(result.rows.length==0)
    {
        app.Alert("Invalid Emp Id");
    }
    else
    {
        db.ExecuteSql("delete from emp where empid=?",[result.rows.item(0).empid]);
        app.Alert("Record deleted");
        empidText.SetText("");
        empnameText.SetText("");
        empsalaryText.SetText("");
    }
}

可以使用以下代码在确认后删除所有记录。 它显示一个用户定义的对话框,以在删除记录之前从用户那里获得确认。

function btnDeleteAll_OnTouch()
{
    dlgDeleteAllConf.Show();
}

function btnDeleteAllOK_OnTouch()
{
    db.ExecuteSql("delete from emp");
    empidText.SetText("");
    empnameText.SetText("");
    empsalaryText.SetText("");
    dlgDeleteAllConf.Hide();
}

function btnDeleteAllCancel_OnTouch()
{
    dlgDeleteAllConf.Hide();
}

关注点

通过从 App 的“插件”菜单下载和安装或购买多个插件,可以进一步增强 DroidScript App 的功能。 例如,您可以购买 ApkBuilder 插件来构建独立的 Android 包文件。

© . All rights reserved.