【问题标题】:create table in a specific schema through c# in mysql在mysql中通过c#在特定模式中创建表
【发布时间】:2018-05-14 06:59:57
【问题描述】:

我正在尝试使用 C# 在 mySQL 中创建数据库和表。到目前为止,我可以通过 c# 在 mysql 中创建 Schema,但是在创建的模式中创建表时遇到了问题。

用户将输入要创建的模式的名称,然后输入将在之前输入的模式名称下创建的表名。架构名称和表名称采用文本框值。

我在表查询中遇到错误,该错误与语法有关。

myQuery1.AppendFormat("CREATE SCHEMA {0}", databasenametxt.Text);
myQuery2.AppendFormat("CREATE TABLE {0} (name VARCHAR(20)) WHERE 
database={0}",tblenametxt.Text,databasenametxt.Text);
string s1 = myQuery1.ToString();
string s2 = myQuery2.ToString();
MySqlCommand cmd = new MySqlCommand(s1, coat);
MySqlCommand cmd1 = new MySqlCommand(s2, coat);
cmd.ExecuteNonQuery();
cmd1.ExecuteNonQuery();

myQuery1 已成功执行,并使用在 databasenametxt.Text 中输入的名称创建了架构,但在 myquery2 中出现错误。

【问题讨论】:

  • 错误是什么?
  • 您发送的值是什么 - 没有使用保留字?空格
  • btw mysql 文档不建议“where database = ..”是有效的语法。
  • 错误是“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行的 'WHERE database=databasename' 附近使用的正确语法”跨度>
  • @BugFinder 我将表和模式名称发送到它应该创建表的位置。

标签: c# mysql sql


【解决方案1】:

我理解的方式是您希望在其中动态创建架构和表。我不确定您遇到的错误,但请尝试使用以下查询:

CREATE TABLE schema_name.table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, .... )

为了替换schema_name 和table_name,它应该如下工作:

myQuery2.AppendFormat("CREATE TABLE {schema_name}.{table_name} ( {column_name1} {data_type}, .... ), your_schema_name, your_table_name, column_name1, data_type1);

你也可以只添加字符串:

myQuery2.AppendFormat("CREATE TABLE " + your_schema_name + "." + your_table_name + " ( " + column_name1 + " " + data_type1 + ")");

只是你正在创建一个查询字符串,它将在 sql server 上运行。

另外,你可以在https://dev.mysql.com/doc/refman/8.0/en/create-table.html获得创建表的所有msql语法

如果有帮助请告诉我!

【讨论】:

  • schema name 和 table_name 是文本框值我应该如何在您的查询中写入这些值?
  • 哦,我不是 C# 专家,但我相信这样做没有什么花哨的。它的工作方式应该与您现在在查询中替换值的方式相同。检查我的编辑。
【解决方案2】:

正如评论中指出的错误“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行的 'WHERE database=databasename' 附近使用的正确语法”

是因为“where database = ..”的语法无效。

因为 schema 只是你想要的 mysql 中数据库的同义词

create database {0}
use {0}
create table {0} (`name` VARCHAR(20))

在您的每个字符串中。为什么要改名?它是一个保留字。

【讨论】:

    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多