有什么方法可以让我的主机网站上的mySQL数据库进行交互吗?
如果我将SMS代码驻留在那里怎么办?
是否存在任何类型的Web代码(PHP,Perl,JavaScript等,我可以使用它来从SMS代码中调用以执行SQL事务(选择,插入,更新,删除等)?即,可以我在主机端创建了一个库,可以在SMS中调用吗?
我有一个有mySQL后端的网站,我想为我的手机编写一个小应用程序,它几乎是我网站的移动版本(功能和图形少)
感谢名单
沙恩
答案 0 :(得分:7)
你不能直接从webbrowser访问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通信)。
答案 1 :(得分:7)
您还可以使用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);
&GT;
=============================================== ==================
短信代码如下所示
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
上的演示