c# - 从 C# 桌面应用程序向远程服务器上的 MySql 数据库添加数据

标签 c# mysql database

我有一个很大的更新字符串列表,每次用户调用函数时,必须通过重写现有记录并将新行添加到远程服务器上的 MySql 数据库来更新从 0 到最后一个索引的每一行。

逐个字符串添加数据即使不被进程挂起也需要大量时间:

 foreach (string str in myList)
 {
     string Query = "insert into tab(a) values(@a);";
     MySqlConnection conn = new MySqlConnection(connString);
     MySqlCommand conn_ = new MySqlCommand(Query, conn);
     conn.Open();
     conn_.ExecuteNonQuery();
     conn.Close();      
}

我的目标是弄清楚什么是最合适的快速完成方法。也许我应该在本地创建和更新表,然后以某种方式将其上传到数据库。

我有一个 List<string> myList = new List<string>();其中包含大约 5000 行,我在远程服务器上的数据库中有表:

id |  user   | nickname
_____________________
0  |  record | record
1  |  ...    | ...   

我想要的结果是将所有记录从 0 更新到最高索引,并添加新记录并删除额外记录,以防当前上传包含的记录少于以前每次从 0 索引开始的记录,当然,索引是否会到来没有关系删除的行之间有间隙。

最佳答案

您声称:

Adding of data to MySql database on remote server

这意味着,您有多个知道远程数据库连接字符串的客户端。这是一个安全灾难! 别想了!另外,如果数据库的连接字符串发生变化会怎样?您需要更新每个客户端。唯一的异常(exception)是,如果您处于具有可信连接的可信环境中,但我怀疑这一点,因为您使用的是 MySQL

针对您的实际问题:

您的主要问题是,对于您循环中的每个项目,您都会创建一个连接,向服务器发送一些内容并关闭您的连接。一次又一次。基本上,您想向服务器发送大命令,而不是循环创建的多个命令 (SQL 可以在一个 SQL 命令中处理 multiple insert statements)

更好(更安全的方式):

为您的服务器创建一个应用程序,例如接受 myList 作为 JSON 并将其保存在那里。可能你需要在这里处理授权。

您的客户向应用程序发送一个带有 myList 的保存请求,我在上面已经提到过。

我们有一些技术:


警告:另外,乍一看,您似乎遇到了 SQL 注入(inject)问题。参见 what they are , 和 how you can prevent it .

关于c# - 从 C# 桌面应用程序向远程服务器上的 MySql 数据库添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55309817/

相关文章:

mysql - 解释命令用法

sql - 我们应该在数据库表命名约定中使用前缀吗?

MYSQL 子句错误

c# - + 带字符串的 C# 运算符

c# - 如何从另一个表单按钮更改表单菜单项的文本

c# - 将 C# 数据类型参数传递给用 C++ 编写的 dll?

SQL:获取查询结果并将其用于另一个 - 合并

c# - 使用 iTextSharp 设置页边距

mysql - ActiveRecord属性总和用户,投票查询rails?

PHP : comparing fetched date with today