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
这是叠加的。。但是每次运行程序都会所有程序都运行一遍,所以全局变量也没用了,主键名都会从头开始,所以就报错了
追答我知道了。
第一次执行多次。 都不会出错是因为,刚创建的时候 都是按照 递增的顺序来的。
然后关闭程序,重新打开的时候, 又是 从 1 2 3 4 这种顺序递增, 前面已经有了这个主键。所以就会报错。
你可以通过什么方法判断一下表中的 主键 有几个。
对了。你懂我的意思了。。- -||
追答楼主你可以采用GUDI 作为 主键名啊。 全球唯一。不会重复。
追问GUDI是啥 - - 我该怎么改代码?
追答string i = Guid.NewGuid();
追问。。报错了。说是无法隐式转换