C#写winform程序,提示插入数据库成功却没有数据
2012-10-17 16:41
489 查看
今天在用C#写一个winform程序时,要向数据库Sql server2005 中插入数据,
程序提示成功,但打开数据库却没有值,再次执行时,提示主键重复,可是
数据库中并没有数据啊
原来的代码为
后来发现除了项目中有个 Database1.mdf 以外,在bin/Debug/下也有一个 Database1.mdf 。
经查阅资料得知,当使用相对路径时,程序把数据库文件复制到了 bin/Debug/ 下面了,也就是说
当插入数据时,实际上是向Debug下面数据库插入文件,而不是在根目录下的数据库,所以无论怎么插入
在根目录下的数据库中根本没有数据,同时,多次插入还会导致主键重复。
所以在调试程序时,应使用绝对路径,等发布程序时再改回。因为程序启动路径是“../bin/Debug”,而我们实际的数据库却在外面。
在这个问题中还可以这样:
程序提示成功,但打开数据库却没有值,再次执行时,提示主键重复,可是
数据库中并没有数据啊
原来的代码为
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下面数据库插入文件,而不是在根目录下的数据库,所以无论怎么插入
在根目录下的数据库中根本没有数据,同时,多次插入还会导致主键重复。
所以在调试程序时,应使用绝对路径,等发布程序时再改回。因为程序启动路径是“../bin/Debug”,而我们实际的数据库却在外面。
在这个问题中还可以这样:
private void button1_Click(object sender, EventArgs e) { string dataDir = AppDomain.CurrentDomain.BaseDirectory; if (dataDir.EndsWith(@"bin\Debug\") || dataDir.EndsWith(@"\bin\Release\")) { dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName; AppDomain.CurrentDomain.SetData("DataDirectory", dataDir); } 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(); } } }
相关文章推荐
- 程序返回插入数据库成功,但是数据库内却没有数据
- 代码提示插入成功,数据库没有数据,事务异常问题
- 新安装的Mysql5.5数据库使用mybatis提示插入数据成功并且主键已经自增,但是数据表中没有数
- c#程序,插入数据库,数据库中没有数据的原因
- 程序返回插入数据库成功,但是数据库内却没有数据
- 插入数据库提示Hibernate: select max(id) from ....然后数据库没有插入数据
- Hibernate插入数据成功,不报错,但是数据库中没有值
- C#编写的winform程序绑定comboBox成功,插入默认选项"请选择"
- C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值
- C#使用OleDB操作ACCESS插入数据时提示:至少一个参数没有被指定值。
- django程序没有问题,保存远地测试数据库,save没问题,控制台也显示update成功,但是在数据库检索数据没有存进去
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- C#随机获得字符串组成帐号和密码并插入到数据库,将插入成功的数据计入文本
- Mybatis插入操作 主键自增 返回成功 但是数据库没有数据
- C# WPF 快速开发12批量数据插入数据库
- C# WinForm程序的App.Config数据库连接配置文件
- 数据库中插入数据后,使用命令行可以查到数据,程序连接查不到
- C#:30行数据插入到数据库中的效率测试-一行行执行、构造SQL一次执行、SqlBulkCopy
- C#的winform程序下如何实现文本编辑框(TextBox)的Hint提示文字效果
- 数据添加成功,删除成功,数据库没有数据