Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我正在创建一个允许最终用户创建应用程序的网站,我将使用用户输入的值作为数据库名称_C# - Fatal编程技术网

C# 我正在创建一个允许最终用户创建应用程序的网站,我将使用用户输入的值作为数据库名称

C# 我正在创建一个允许最终用户创建应用程序的网站,我将使用用户输入的值作为数据库名称,c#,C#,我正在从文本框中检索AppName string AppName = TextBox1.Text; 现在我想创建一个数据库,其名称将从文本框中检索,即AppName string Text = "create database AppName"; MySqlCommand cmd = new MySqlCommand(Text,Connection); 但是上面的代码正在创建名为AppName的数据库,而不是用户输入的名称 string Text=create database+

我正在从文本框中检索AppName

string AppName = TextBox1.Text;  
现在我想创建一个数据库,其名称将从文本框中检索,即AppName

string Text = "create database AppName";  
MySqlCommand cmd = new MySqlCommand(Text,Connection);  

但是上面的代码正在创建名为AppName的数据库,而不是用户输入的名称

string Text=create database+AppName

您在SQL查询中没有使用实际值,只是每次都使用相同的文本字符串:

"create database AppName"
相反,您需要合并输入的实际值。我对MySQL语法或查询对象不是100%熟悉,但通常情况下会是这样的:

string appName = TextBox1.Text;
string commandText = "CREATE DATABASE @DBName";
using (MySqlCommand cmd = new MySqlCommand(commandText, connection))
{
    cmd.Parameters.Add("@DBName", System.Data.SqlDbType.NVarChar, 50);
    cmd.Parameters["@DBName"].Value = appName;

    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
}

这是免费的代码,因为我没有可用的相关对象。但是,您可以在查询@TableName中创建一个变量参数,然后在执行查询cmd.Parameters[@TableName].value=appName;之前使用所需的运行时值填充该参数

请阅读如何提问-MySqlConnection=newmysqlconnectionconn;我回答了他的问题,这是一个话题,可能因为回答不好而被否决了。世界上有足够多的SQL注入漏洞,请不要添加更多。此外,答案没有提供上下文或信息。它只提供了一行未格式化的代码;MySqlDataAdapter=新的MySqlDataAdapter;字符串AppName=AppNameTextBox.Text;字符串cmdText=create database+AppName;MySqlCommand cmd=新的MySqlCommandcmdText,连接;上面的代码给出了一个错误,SQL语法错误;为什么大卫被否决了?这似乎是一个可靠的反馈,回答了这个问题。@awesome程序员:我在编辑历史记录中遇到了一些复制/粘贴问题,这就是我试图一次做太多事情的结果,所以代码一开始就不起作用。虽然这是可能的,但它仍然不起作用。正如我所说,我面前没有相关的对象。我想这可能就是原因。如果答案确定得令他满意,那么被否决的选民有机会取消投票。如果没有,我很高兴听到为什么答案可以改进。准备好的语句可以与CREATE这样的命令一起工作吗?我认为对什么类型的语句或至少语句的哪些部分可以参数化有一些限制,例如,不能在SELECT语句中将表名作为参数。@JasonPerske:老实说,我不确定。我想这值得一试。如果没有,那么我们仍然可以在将输入用于查询之前对其进行清理。您能告诉我们您尝试使用用户输入的名称创建数据库的代码吗?