有什么方式可以让 SMS 与我的主机站点上的 mySQL 数据库交互吗?
如果我让 SMS 代码驻留在那里怎么办?
是否有任何类型的 Web 代码(PHP、Perl、JavaScript 等,我可以用来从 SMS 代码中调用以执行 SQL 事务(选择、插入、更新、删除等)?即,我可以创建一个从 SMS 中调用主机端的库?
我有一个具有 mySQL 后端的网站,我想为我的手机编写一个小应用程序,它几乎是我网站的移动版本(功能和图形较少)
谢谢
谢恩
有什么方式可以让 SMS 与我的主机站点上的 mySQL 数据库交互吗?
如果我让 SMS 代码驻留在那里怎么办?
是否有任何类型的 Web 代码(PHP、Perl、JavaScript 等,我可以用来从 SMS 代码中调用以执行 SQL 事务(选择、插入、更新、删除等)?即,我可以创建一个从 SMS 中调用主机端的库?
我有一个具有 mySQL 后端的网站,我想为我的手机编写一个小应用程序,它几乎是我网站的移动版本(功能和图形较少)
谢谢
谢恩
您不能直接从网络浏览器访问 mysql(仅当它具有某种带有 rest/json 的 http 接口但没有数据库服务器具有此功能时?)。但是当然你可以调用任何http服务器,不管它是用php还是其他东西,rest,soap,json等等:你只需要知道哪个url,也许是asm块中的一些“低级”javascript。
目前,最简单的方法是使用 RemObjects 在 Delphi 中创建服务器。在 SmartMobileStudio (SMS) IDE 中,您可以导入类似 SOAP 的接口文件,并且将为您生成所有客户端代码 (pascal)(具有类型安全性)!:)
通过更多的努力,您可以制作一个 SOAP 服务器,但是您可能需要自己制作一些 javascript 代码(并且您需要一个支持 SOAP 的 JS 库)。
在下一个主要版本中将支持 node.js,它是一个服务器端 javascript 服务器!然后很容易在 node.js(或文件等,它没有 webbrowser 沙箱)中访问 mysql,并且使用 socket.io,您可以轻松访问这个 node.js 服务器(如果您愿意,可以在云中)并使用 json 发送数据. socket.io 的好处是您还可以将数据推送到客户端,因为它支持 websockets(通过 http 进行实时双向 tcpip 通信)。
您还可以使用 XML 访问您的 MySQL 数据:
基本上,您的服务器上有一个 php 文件(名为 getuser.php),您可以在其中建立与数据库的连接,提交查询并以您需要的任何格式回显结果(在本例中为 html 格式的表)。
==================================================== ================
/* Database config */
$db_host = '....';
$db_user = '....';
$db_pass = '....';
$db_database = 'symphony_kvc';
/* End config */
$q = intval($_GET['q']);
$con = mysqli_connect($db_host,$db_user,$db_pass,$db_database);
if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"$db_database");
$sql="SELECT * FROM comments WHERE id = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<table border='1'>
<tr>
<th>name</th>
<th>url</th>
<th>email</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['url'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
==================================================== ================
短信代码如下所示
unit Form1;
interface
uses
w3system, w3graphics, w3components, w3forms, w3fonts, w3borders,
w3application, W3Elements, W3Button, w3memo, w3editbox, w3time, W3Label, W3Image;
type
TForm1=class(TW3form)
private
{ Private methods }
{$I 'Form1:intf'}
protected
{ Protected methods }
procedure InitializeObject; override;
procedure ShowClicked(Sender: TObject);
procedure FinalizeObject; override;
procedure StyleTagObject; reintroduce; virtual;
procedure Resize; override;
procedure GetMyData;
Procedure HandleUpdate(Sender:TObject);
MyData: String;
Memo1: TW3Memo;
Button1 :TW3Button;
Edit1: TW3EditBox;
FTimer: TW3Timer;
end;
implementation
{ TForm1}
procedure TForm1.GetMyData;
begin
asm
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
@MyData = '';
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
@MyData = xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?q=1",true);
xmlhttp.send();
end; //asm
end;
procedure TForm1.HandleUpdate(Sender:TObject);
begin
If MyData <> '' then begin // populate controls soon as data received
txtHint.InnerHTML := MyData;
Memo1.Text := MyData;
Button1.InnerHTML := MyData;
Edit1.Text := StrAfter(MyData,'mailto:');
FTimer.Enabled:=False;
W3Image1.Visible := false;
end;
end;
procedure TForm1.ShowClicked(Sender: TObject);
begin
W3Image1.Visible := true; //make spinner visible
GetMyData;
FTimer.OnTime:=HandleUpdate; //wait until data fetched
FTimer.Delay:=5;
end;
procedure TForm1.InitializeObject;
begin
inherited;
{$I 'Form1:impl'}
W3Image1.LoadFromURL('res/spinner.gif'); //load spinner and set to invisible
W3Image1.OnLoad :=
procedure (Sender: TObject)
begin
W3Image1.Visible := false;
end;
//create the 3 controls
Edit1 := TW3EditBox.Create(Self);
Edit1.SetBounds(30, 90, 400, 50);
W3Label1.SetBounds(30, 50, 400, 50); // title edit1
Memo1 := TW3Memo.Create(Self);
Memo1.SetBounds(30, 180, 400, 150);
W3Label2.SetBounds(30, 142, 400, 50); // title memo1
Button1 := TW3Button.Create(Self);
Button1.SetBounds(30, 520, 400, 150);
W3Label3.SetBounds(30, 330, 500, 50); // title divhtmlelement
txtHint.SetBounds(30, 370, 400, 150);
W3Button1.OnClick := ShowClicked;
FTimer:=TW3Timer.Create;
end;
上面将在表单上显示一个按钮,表单上的另一个元素是 TW3DIVHtmlElement、Memo 和 EditBox。单击时,将获取数据
Kudos w3schools,改编自他们的一篇文章的演示
这工作正常。请参阅 www.lynkit.com.au/MySQL 上的演示