mysql - Delphi代码不会保存到Mysql数据库
问题描述
好的,我来自 C# 背景。这没有保存到 Mysql 数据库表中。我努力让它与数据库通信,但它没有插入到数据库表中。它只显示消息框,但是当我刷新时,数据库中没有显示任何内容。代码看起来像这样
unit mysqlConn;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, sqldb, mysql56conn, Forms, Controls, Graphics,
Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
MySQL56Connection1: TMySQL56Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('insert into people_info(name,email,telephone,gender)');
SQLQuery1.SQL.Add('values(:name,:email,:telephone,:gender)');
SQLQuery1.Params.ParamByName('name').AsString:=Edit1.Text;
SQLQuery1.Params.ParamByName('email').AsString:=Edit2.Text;
SQLQuery1.Params.ParamByName('telephone').AsString:=Edit3.Text;
SQLQuery1.Params.ParamByName('gender').AsString:=Edit4.Text;
SQLQuery1.ExecSQL;
showmessage('Ok I am saved!');
end;
end.
我似乎缺少什么?
解决方案
我没有添加 SQLTransaction1.Commit,因此保存到数据库是空的。代码现在看起来像这样:
unit mysqlConn;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, sqldb, mysql56conn, Forms, Controls, Graphics,
Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
MySQL56Connection1: TMySQL56Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SQLQuery1.SQL.Clear;
SqlQuery1.SQL.text:='insert into people_info (name, email, telephone, gender) values (:name,:email,:telephone,:gender)';
SqlQuery1.Params.ParamByName('name').AsString := Edit1.text;
SqlQuery1.Params.ParamByName('email').AsString := Edit2.text;
SqlQuery1.Params.ParamByName('telephone').AsString := Edit3.text;
SqlQuery1.Params.ParamByName('gender').AsString := Edit4.text;
SQLQuery1.ExecSQL;
SQLTransaction1.Commit; // This saved to the database
showmessage('Ok I am saved!');
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
end;
end.
推荐阅读
- c++ - 与序列外的值进行比较
- java - 如何在 Spring Boot 项目中保持客户端时间和服务器端时间同步?
- javascript - 无法使用传单在地图上绘制形状
- javascript - 寻找用纯 Lua 或 JavaScript 编写的 Unicode 换行算法的实现
- scikit-learn - 在集群上应用 Scikit-learn 时对数据位置的困惑(Dask)
- r - 在将文件提交到 GitHub 时。它没有将用户名配置为 Git。而是使用 GitHub 的用户名。为什么会这样?
- python - Python py_compile 不产生输出?
- reactjs - react-hook-form - 每次提交后为空输入字段
- wordpress - 在将 woocommerce 中的商品添加到购物车之前添加免责声明消息
- python - 迭代包含嵌套数组的 pandas 数据框列(重新制定的请求)