如何在Delphi运行时动态创建一个MySQL数据库?

2026-04-10 03:121阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计699个文字,预计阅读时间需要3分钟。

如何在Delphi运行时动态创建一个MySQL数据库?

我有一个连接到MySQL数据库的Delphi应用程序,但我想为最终用户创建一个简单的方法来实现MySQL数据库。我想在我的应用程序中创建一个按钮,用户可以通过点击这个按钮来删除当前的schema。

我有一个连接到 MySQL数据库的delphi应用程序,但是,我想为我的最终用户创建一个简单的方法来实现MySQL数据库.我想在我的应用程序中创建一个按钮,用户可以按这个按钮删除当前的scehma实例,并使用我的应用程序需要运行的正确表和列创建一个新模式.

我编写了代码来创建新数据库.它如下:

如何在Delphi运行时动态创建一个MySQL数据库?

CREATE SCHEMA IF NOT EXISTS fakeschema; USE fakeschema; CREATE TABLE table1 (IDtable1 int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, Line1 varchar(45), Line2 varchar(45));

代码在MySQL中正常运行,但是在执行代码时我收到SQL语法错误.我得到了:

error in your SQL syntax near ‘USE fakeschema; CREATE TABLE table1 (IDtable1 int(11) PRIMARY KEY NO’

我正在使用ADOConnection链接到数据源.按下按钮后,我正在编写连接字符串.我正在使用ADOQuery来执行SQL代码.

这是我用来连接数据库的代码片段:

ADOC.ConnectionString := 'PROVIDER = MSDASQL; DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; Data Source=faketest; DATABASE=fakeschema; USER ID=root; PASSWORD=pass; OPTION=3;'; ADOC.DefaultDatabase := 'fakeschema'; ADOC.Connected := True;

我使用错误的工具/方法吗?我是MySQL新手,我目前正在学习Delphi.

正如我的一条评论中所提到的,问题是尝试在单个TAdoQuery组件中执行多个单独的SQL语句.

在一个理想的世界中,你会有一个像MyDAC这样的组件,它有一个脚本组件可以代替TAdoQuery使用(MyDAC会给你带来其他好处,比如不必通过ODBC连接).我不知道是否有任何免费的MySQL组件,其中有一个脚本组件.

另一种方法是您可以创建脚本文件(例如createFakeSchema.sql)并通过命令行执行它.例如:

createFakeSchema.sql:

CREATE SCHEMA IF NOT EXISTS fakeschema; USE fakeschema; CREATE TABLE table1 (IDtable1 int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, Line1 varchar(45), Line2 varchar(45));

示例源代码:

procedure TfrmMain.DoExecuteScriptFile; var cmd: string; KeepOpen: Boolean; begin KeepOpen := True; // option to automatically close window once execution is done // for releasing you would not want it kept open, but handy for debugging if KeepOpen then cmd := '/k ' else cmd := '/c '; cmd := cmd + Format(' mysql -uroot -proot -D%s < "%s"', ['FakeSchema', 'createFakeSchema.sql']); ShellExecute(handle,'open', 'cmd.exe', Pchar(cmd), nil, SW_SHOW ); end;

这样你就可以在某处外部创建你的脚本文件,自己通过MySQL测试它,然后当你知道你的脚本工作时,你可以通过你的程序运行它.如果要在执行时隐藏命令窗口,请将ShellExecute中的SW_SHOW更改为SW_HIDE.这样你甚至根本不需要任何组件 – 只需在路径中访问mysql.exe或在cmd语句中包含完整路径即可.

这是在MySQL 5.1中完成的,所以希望适用于3.5 …

本文共计699个文字,预计阅读时间需要3分钟。

如何在Delphi运行时动态创建一个MySQL数据库?

我有一个连接到MySQL数据库的Delphi应用程序,但我想为最终用户创建一个简单的方法来实现MySQL数据库。我想在我的应用程序中创建一个按钮,用户可以通过点击这个按钮来删除当前的schema。

我有一个连接到 MySQL数据库的delphi应用程序,但是,我想为我的最终用户创建一个简单的方法来实现MySQL数据库.我想在我的应用程序中创建一个按钮,用户可以按这个按钮删除当前的scehma实例,并使用我的应用程序需要运行的正确表和列创建一个新模式.

我编写了代码来创建新数据库.它如下:

如何在Delphi运行时动态创建一个MySQL数据库?

CREATE SCHEMA IF NOT EXISTS fakeschema; USE fakeschema; CREATE TABLE table1 (IDtable1 int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, Line1 varchar(45), Line2 varchar(45));

代码在MySQL中正常运行,但是在执行代码时我收到SQL语法错误.我得到了:

error in your SQL syntax near ‘USE fakeschema; CREATE TABLE table1 (IDtable1 int(11) PRIMARY KEY NO’

我正在使用ADOConnection链接到数据源.按下按钮后,我正在编写连接字符串.我正在使用ADOQuery来执行SQL代码.

这是我用来连接数据库的代码片段:

ADOC.ConnectionString := 'PROVIDER = MSDASQL; DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; Data Source=faketest; DATABASE=fakeschema; USER ID=root; PASSWORD=pass; OPTION=3;'; ADOC.DefaultDatabase := 'fakeschema'; ADOC.Connected := True;

我使用错误的工具/方法吗?我是MySQL新手,我目前正在学习Delphi.

正如我的一条评论中所提到的,问题是尝试在单个TAdoQuery组件中执行多个单独的SQL语句.

在一个理想的世界中,你会有一个像MyDAC这样的组件,它有一个脚本组件可以代替TAdoQuery使用(MyDAC会给你带来其他好处,比如不必通过ODBC连接).我不知道是否有任何免费的MySQL组件,其中有一个脚本组件.

另一种方法是您可以创建脚本文件(例如createFakeSchema.sql)并通过命令行执行它.例如:

createFakeSchema.sql:

CREATE SCHEMA IF NOT EXISTS fakeschema; USE fakeschema; CREATE TABLE table1 (IDtable1 int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, Line1 varchar(45), Line2 varchar(45));

示例源代码:

procedure TfrmMain.DoExecuteScriptFile; var cmd: string; KeepOpen: Boolean; begin KeepOpen := True; // option to automatically close window once execution is done // for releasing you would not want it kept open, but handy for debugging if KeepOpen then cmd := '/k ' else cmd := '/c '; cmd := cmd + Format(' mysql -uroot -proot -D%s < "%s"', ['FakeSchema', 'createFakeSchema.sql']); ShellExecute(handle,'open', 'cmd.exe', Pchar(cmd), nil, SW_SHOW ); end;

这样你就可以在某处外部创建你的脚本文件,自己通过MySQL测试它,然后当你知道你的脚本工作时,你可以通过你的程序运行它.如果要在执行时隐藏命令窗口,请将ShellExecute中的SW_SHOW更改为SW_HIDE.这样你甚至根本不需要任何组件 – 只需在路径中访问mysql.exe或在cmd语句中包含完整路径即可.

这是在MySQL 5.1中完成的,所以希望适用于3.5 …