【问题标题】:create table with parameter as name mysql (c#)创建以参数为名称mysql的表(c#)
【发布时间】:2020-09-18 13:42:50
【问题描述】:

我想为聊天程序中的每个聊天动态创建表格,但实际上找不到方法。这是我尝试过的:

   string cmdct = "create table @parameter1 (message varchar(500), sender varchar(20), recieved varchar(5), sendtime varchar(60), deleted varchar(5))";
                MySqlCommand m2 = new MySqlCommand(cmdct, connect2);
            string name = "" +participant1+ "_" +participant3+ "";
            m2.Parameters.AddWithValue("@parametertb1", name);
           
       
                m2.Connection = connect2;
                connect2.Open();

                string MyConnection2 = connectionString2;
                MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);
                
                errorbox.Content = "Loading...";

                MySqlDataReader MyReader2;
                MyConn2.Open();
                MyReader2 = m2.ExecuteReader();
               
                while (MyReader2.Read())
                {
                    errorbox.Content = "Creating chat...";
                }
                MyConn2.Close();

这是产生的错误:

MySql.Data.MySqlClient.MySqlException:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 ''part1_part2' 附近使用的正确语法(消息 varchar(500),发件人varchar(20), 得到 varchar(5),' 在第 1 行"

part1 和 part2 是我要聊天的用户。

【问题讨论】:

标签: c# mysql


【解决方案1】:

我想为每个聊天动态创建表格

这可能是个坏主意。为所有聊天设置一个大表并通过识别数据来区分它们可能是一种更好的方法。说了这么多……

查询参数用于值,而不是模式对象。动态包含模式对象是字符串连接的工作。可以想象,这会带来 SQL 注入的风险。所以你需要控制正在使用的值。为此,这些participant1等变量从何而来?

如果它们来自用户输入或任何间接用户可修改的内容,那么您将面临风险。但是,如果它们是您控制的值(例如他们无法编辑的用户的内部标识符),那么您可以在查询的字符串连接中安全地使用它们。

最终,您可能最好使用您控制的静态架构,而不是用户控制的动态架构。例如,与其为“新聊天”创建一个新表,为什么不创建一个带有简单自动递增键的“聊天”表和一个带有“聊天”外键的“消息”表?当然,“消息”会随着时间的推移而大幅增长。但这是一个不同的问题,有不同的解决方案(你可以在确定它是否是一个问题之前进行衡量)。

【讨论】:

  • 但是客户端是如何在一张大桌子上识别出哪条消息属于他的聊天的呢?
  • @TerryF.:这就是第二个“聊天”表的用途。任何唯一的“聊天会话”都将是该表中的一条记录,并且所有“消息”都将具有该记录的外键。任何给定的用户都会查看与该特定聊天会话匹配的记录。
  • 非常感谢!我会尝试使用这个方法
猜你喜欢
  • 2015-04-20
  • 1970-01-01
  • 2020-08-20
  • 2016-10-18
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多