C#中在一个窗体中的文本框中输入表名称点击确定后就可以在SQl数据库中生成一张表,这怎么做?

static int i=1;
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Server=.\\SQLEXPRESS;uid=sa;pwd=59365615;Database=Attendance Manage");
con.Open();
string create_table = "create table " + maskedTextBox1.Text + "(Anumber nchar(20) constraint PK_" + i + " primary key,employeename nchar(20),date datetime,worktime int,overtime int,absentwork int,late int,askleave int)";

SqlCommand cmd = new SqlCommand(create_table, con);
cmd.ExecuteNonQuery();
MessageBox.Show("创建成功");
i+=1;//上面设全局变量,这里循环加1,为了多次建表,主键名不重复
this.Close();
}
这个代码没多大问题就是程序第一次运行不管建多少表都没问题的,但是第二次运行这程序里面的所有代码都重新执行了一遍所以SQL表的主键名就会重复,设置全局变量也就没有用了。。这怎么搞?? 0.0

调试一下,i+=1 这个全局变量。是否叠加。追问

这是叠加的。。但是每次运行程序都会所有程序都运行一遍,所以全局变量也没用了,主键名都会从头开始,所以就报错了

追答

我知道了。
第一次执行多次。 都不会出错是因为,刚创建的时候 都是按照 递增的顺序来的。

然后关闭程序,重新打开的时候, 又是 从 1 2 3 4 这种顺序递增, 前面已经有了这个主键。所以就会报错。

你可以通过什么方法判断一下表中的 主键 有几个。

追问

对了。你懂我的意思了。。- -||

追答

楼主你可以采用GUDI 作为 主键名啊。 全球唯一。不会重复。

追问

GUDI是啥 - - 我该怎么改代码?

追答

string i = Guid.NewGuid();

追问

。。报错了。说是无法隐式转换

温馨提示:答案为网友推荐,仅供参考