C# &引用;SQL语法中有错误“0”;创建新表时
尝试在MySQL中使用创建表时出错。我想不出是什么原因造成的。我想它可能是一个保留的单词“Name”,但我把它改名为CharName,这会有所帮助。有人对此有什么见解吗 这是我的字符串:C# &引用;SQL语法中有错误“0”;创建新表时,c#,mysql,C#,Mysql,尝试在MySQL中使用创建表时出错。我想不出是什么原因造成的。我想它可能是一个保留的单词“Name”,但我把它改名为CharName,这会有所帮助。有人对此有什么见解吗 这是我的字符串: CREATE TABLE xxx.xxx.xxx.xxx_10FEED988A06 ( `Date` datetime NOT NULL , `Guid` varchar(255) NULL , `CharName` varchar(255) NULL , `Server`
CREATE TABLE xxx.xxx.xxx.xxx_10FEED988A06 (
`Date` datetime NOT NULL ,
`Guid` varchar(255) NULL ,
`CharName` varchar(255) NULL ,
`Server` varchar(255) NULL ,
`CpuId` varchar(255) NULL ,
`HardDriveId` varchar(255) NULL ,
`MacAddress` varchar(255) NULL ,
`IpAddress` varchar(255) NULL ,
`MD5` varchar(255) NULL ,
PRIMARY KEY (`Date`)
)
这是我的错误:
MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for the
right syntax to use near '70.210.131.54_10FEED988A06 (`Date` datetime NOT NULL
,`Guid` varchar(255) NULL' at line 1
这是我的密码:
public static void CreateNonUsersTable()
{
const string myConString = "Server=" + Server + ";" +
"PORT=" + Port + ";" +
"DATABASE=" + NonusersDataBase + ";" +
"Persist Security Info=No;" +
"Convert Zero Datetime=True;" +
"Encrypt=True;" +
"SslMode=Required;" +
"username=" + DbUser + ";" +
"password=" + DbPass + ";";
string createUser = @"CREATE TABLE " + Username + " (" +
"`Date` datetime NOT NULL ," +
"`Guid` varchar(255) NULL ," +
"`CharName` varchar(255) NULL ," +
"`Server` varchar(255) NULL ," +
"`CpuId` varchar(255) NULL ," +
"`HardDriveId` varchar(255) NULL ," +
"`MacAddress` varchar(255) NULL ," +
"`IpAddress` varchar(255) NULL ," +
"`MD5` varchar(255) NULL ," +
"PRIMARY KEY (`Date`))";
Logger.Write(myConString, Enums.LogType.Info);
Logger.Write(createUser, Enums.LogType.Info);
using (var conn = new MySqlConnection(myConString))
{
conn.Open();
using (var cmd = new MySqlCommand(createUser, conn))
{
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Logger.Write(ex.ToString(), Enums.LogType.Exception);
}
finally
{
cmd.Dispose();
}
}
conn.Close();
conn.Dispose();
}
}
表名中的
句点导致了错误。请参见表名中的
句点导致错误。请参见您必须通过倒勾来转义表名
替换这个
CREATE TABLE xxx.xxx.xxx.xxx_10FEED988A06
借
或最好将
更改为其他字符,如
,-
您必须通过倒勾来转义表名
替换这个
CREATE TABLE xxx.xxx.xxx.xxx_10FEED988A06
借
或最好将
更改为一些其他字符,如
,-
将表名放在反勾中,它应该可以工作。句点把它弄乱了,因为它们通常用于定义数据库/表的组合(例如,创建表mydb.mytable
)将表名放在反勾号中,它应该可以工作。句点会把它弄得一团糟,因为它们通常用于定义数据库/表组合(例如,创建表mydb.mytable
)您不能使用带有点的名称创建表。使用点是非法的表达方式
改为使用下划线。
(它们被用作常用惯例)。它们的使用是合法的:
CREATE TABLE xxx_xxx_xxx_xxx_10FEED988A06
请参阅SQL Fiddle。您不能使用带有点的名称创建表,如
xxx.xxx.xxx\u 10FEED988A06
。使用点是非法的表达方式
改为使用下划线。
(它们被用作常用惯例)。它们的使用是合法的:
CREATE TABLE xxx_xxx_xxx_xxx_10FEED988A06
请参阅SQL Fiddle。有些不相关:如果您的
Username
变量包含用户提供的数据,则您会受到SQLI漏洞的攻击。有些不相关:如果您的Username
变量包含用户提供的数据,则您会受到SQLI漏洞的攻击。我会这样做。非常感谢。这就是我需要的答案!你不应该那样做。。。你应该把圆点改成一个,我会的。非常感谢。这就是我需要的答案!你不应该那样做。。。你应该把圆点改成一个,我很感激你的信息!我感谢你的信息!