【发布时间】:2014-06-08 22:22:02
【问题描述】:
我有一个这样的表格,我可以轻松直观地创建表格。
改变一张桌子要困难得多。
我对表格的语法做了另一个构造函数来改变(来自show create table table_name_to_alter)
从构造函数中,我调用了一个应该填充所有数据网格字段的函数:
private void load_table_fields_into_datagrid(string table_syntax)
{
/*
CREATE TABLE `città` (
`ID_CITTA` int(11) NOT NULL,
`Città` varchar(45) DEFAULT NULL,
PRIMARY KEY (`ID_CITTA`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
I have to decompress that syntax and insert into data grid view
*/
string[] app = table_syntax.Split('\n');
table_name_textbox.Text = app[0].Split(new char[] { '`', '`' })[1];
for (int i = 1; app[i][2]=='`' ; i++)
{
if (app[i].Contains("NOT NULL"))
{
dataGridView1.Rows[i - 1].Cells[4].Value = true;
app[i] = app[i].Replace("NOT NULL", "");
}
if (app[i].Contains("PRIMARY KEY"))
{
dataGridView1.Rows[i - 1].Cells[2].Value = true;
app[i] = app[i].Replace("PRIMARY KEY", "");
}
if (app[i].Contains("UNIQUE"))
{
dataGridView1.Rows[i - 1].Cells[3].Value = true;
app[i] = app[i].Replace("UNIQUE", "");
}
if (app[i].Contains("BINARY COLUMN"))
{
dataGridView1.Rows[i - 1].Cells[5].Value = true;
app[i] = app[i].Replace("BNARY COLUMN", "");
}
if (app[i].Contains("UNSIGNED DATA"))
{
dataGridView1.Rows[i - 1].Cells[6].Value = true;
app[i] = app[i].Replace("UNSIGNED DATA", "");
}
if (app[i].Contains("AUTO INCREMENT"))
{
dataGridView1.Rows[i - 1].Cells[7].Value = true;
app[i] = app[i].Replace("AUTO INCREMENT", "");
}
if (app[i].Contains("ZERO FILL"))
{
dataGridView1.Rows[i - 1].Cells[8].Value = true;
app[i] = app[i].Replace("ZERO FILL", "");
}
if (app[i].Contains("DEFAULT"))
{
System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(app[i], @"DEFAULT\s+\S+");
if (m.Success)
{
dataGridView1.Rows[i - 1].Cells[9].Value = m.Value.TrimEnd(',').Split(' ')[1];
app[i].Replace(dataGridView1.Rows[i - 1].Cells[9].Value.ToString(), "");
}
}
/* NOW I ONLY HAVE NAME + TYPE*/
dataGridView1.Rows.Add();
dataGridView1.Rows[i - 1].Cells[0].Value = app[i].Split(new char[] { '`', '`' })[1];
app[i]= app[i].Replace(app[i].Split(new char[] { '`', '`' })[1], "");
app[i] = app[i].Replace("``", "");
//type
(dataGridView1.Rows[i].Cells[1] as DataGridViewComboBoxCell).Items.Add(app[i].Substring(0, app[i].IndexOf(')') + 1));
app[i] = app[i].Replace(app[i].Substring(0, app[i].IndexOf(')') + 1), "");
}
}
输入类型值不起作用。 但是这个函数好像不太清楚,太长了。 是否可以使用正则表达式来压缩 table_syntax 和更改表? 在那之后我怎么能做诸如alter name ecc之类的语句......我应该使用Tag来查看修改的项目吗? 我希望有人能帮助我。 提前致谢。
【问题讨论】:
标签: c# mysql sql regex datagridview