C# 获取模式时如何将autoincrement设置为1

C# 获取模式时如何将autoincrement设置为1,c#,mysql,C#,Mysql,每年年底,我都会有12个表在一定条件下转移到新数据库中。(db2012、db2013等) 通过下面的过程,我从旧数据库中获取模式,并将它们创建到新数据库中。 但是当在每个模式的末尾创建新表时,有一行AUTO_INCREMENT=oldlastvalue of autoincrement value 我怎样才能得到它 1) 在传输数据之前,我必须截断每个表 2) 编写在sql文件中更改此数字的过程 3) ??希望在读取旧数据库时将其作为1 有解决办法吗 private void CopySchem

每年年底,我都会有12个表在一定条件下转移到新数据库中。(db2012、db2013等) 通过下面的过程,我从旧数据库中获取模式,并将它们创建到新数据库中。 但是当在每个模式的末尾创建新表时,有一行AUTO_INCREMENT=oldlastvalue of autoincrement value

我怎样才能得到它

1) 在传输数据之前,我必须截断每个表

2) 编写在sql文件中更改此数字的过程

3) ??希望在读取旧数据库时将其作为1

有解决办法吗

private void CopySchemas(string pathname)
    {
        string [] MyArray = new string[12];
        int index = 0;
        using (MySqlConnection conn = new MySqlConnection(PublicVariables.cs))
        {
            using(MySqlCommand cmd = new MySqlCommand("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='" + PublicVariables.DbName+"'",conn))
                {
                    conn.Open();
                    MySqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        MyArray[index] = reader.GetValue(0).ToString();   // getting only the name of the table for creating my filename.sql
                        ++index;
                    }
                    reader.Dispose();
                }
            for (int i = 0; i < MyArray.Length; ++i)
            {
                string tblname = MyArray[i];
                string fname = pathname  +"\\" + tblname + ".sql";
                MySqlCommand cmd = new MySqlCommand("SHOW CREATE TABLE " + PublicVariables.DbName + "." + tblname, conn);
                MySqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    for (int a = 0; a < reader.FieldCount; ++a)
                       string Schemas = reader.GetValue(a).ToString();
                    File.WriteAllText(fname,Schemas );
                }
                reader.Dispose();
            }
        }
    }
private void CopySchemas(字符串路径名)
{
字符串[]MyArray=新字符串[12];
int指数=0;
使用(MySqlConnection conn=newmysqlconnection(PublicVariables.cs))
{
使用(MySqlCommand cmd=new MySqlCommand(“从信息_SCHEMA.TABLES中选择表_NAME,其中表_TYPE='BASE TABLE'和表_SCHEMA='”+PublicVariables.DbName+'”,conn))
{
conn.Open();
MySqlDataReader=cmd.ExecuteReader();
while(reader.Read())
{
MyArray[index]=reader.GetValue(0.ToString();//仅获取用于创建my filename.sql的表的名称
++指数;
}
reader.Dispose();
}
对于(int i=0;i
对于MySQL,命令是:

ALTER TABLE tablename AUTO_INCREMENT = 0

我原以为我从你的头衔上理解了你的问题,但现在我不太确定了。您只是想创建一个表并将标识重置为0吗?您知道,当您使用show create table读取时,您拥有该表的架构,并且在文件末尾,您拥有AUTO_INCREMENT=324(这是任意的)。我希望我的新数据库从新表AUTO_INCREMENT=1开始,让我知道我的答案是否正确。也许我还是不明白。我会试试,我想它会起作用的。它会起到与TRUNCATE相同的效果(我的表是空的)@IsmailGunes,让我知道它对你有什么作用。请记住标记答案,并向上看是的,这很好。有点晚了,但我正忙着另一个节目组,我搜索了如何获取表名的方法。