今天在用C#写一个winform程序时,要向数据库Sql server2005 中插入数据,
程序提示成功,但打开数据库却没有值,再次执行时,提示主键重复,可是
数据库中并没有数据啊
原来的代码为
string sql = @"Data Source=.;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection con = new SqlConnection(sql))
{
con.Open();
using(SqlCommand cmd=con.CreateCommand())
{
cmd.CommandText = "insert into tb_test(ID,Name,Age) values('wang1','haha',123)";
cmd.ExecuteNonQuery();
}
}
后来发现除了项目中有个 Database1.mdf 以外,在bin/Debug/下也有一个 Database1.mdf 。
经查阅资料得知,当使用相对路径时,程序把数据库文件复制到了 bin/Debug/ 下面了,也就是说
当插入数据时,实际上是向Debug下面数据库插入文件,而不是在根目录下的数据库,所以无论怎么插入
在根目录下的数据库中根本没有数据,同时,多次插入还会导致主键重复。
所以在调试程序时,应使用绝对路径,等发布程序时再改回。因为程序启动路