Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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# &引用;SQL语法中有错误“0”;创建新表时_C#_Mysql - Fatal编程技术网

C# &引用;SQL语法中有错误“0”;创建新表时

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`

尝试在MySQL中使用创建表时出错。我想不出是什么原因造成的。我想它可能是一个保留的单词“Name”,但我把它改名为CharName,这会有所帮助。有人对此有什么见解吗

这是我的字符串:

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漏洞的攻击。我会这样做。非常感谢。这就是我需要的答案!你不应该那样做。。。你应该把圆点改成一个,我会的。非常感谢。这就是我需要的答案!你不应该那样做。。。你应该把圆点改成一个,我很感激你的信息!我感谢你的信息!