当前位置:编程学习 > C#/ASP.NET >>

强类型Dataset在adapter.Update()时意外错误,只更新本地数据库,不更新服务器数据库

在C#中我添加了一个“基于服务的数据库”文件,叫DB1.mdf,做了一个表,字段Id是主键自增int型,字段name是 nvarchar(50)。手工输入了三条非空记录, 然后添加了一个数据集,再把表拖到数据集中自动生成类,接着写代码,更改表中字段值,最后用Update指命更新强类型Dataset到数据库,可是发现,他并没有更新“服务器资源管理器中的DB1.mdf文件,而是在本应用程序的/bin/debug下生成了一个新的DB1.mdf,运行中以为是更新了服务器,其实没有,每次重新编译后就还是使用的末更新的服务器数据库,一动表记录就在写本地DB1.mdf。头大了,代码如下。

namespace 强类型DataSet1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //强类型Dataset制动生成的类
            //表名+TableAdapter,表名+DataTable,表名+Row,然后用"解析"来填充类名。                        
           T_PersonsTableAdapter adapter = new T_PersonsTableAdapter();
            强类型DataSet1.DataSetPersons.T_PersonsDataTable personsTable = adapter.GetData();
            personsTable[0].Name = "ccc1";
            personsTable[1].Name = "aaa";
            personsTable[2].Name = "bbb";
            //强类型DataSet无需下面这条
            //SqlCommandBuilder builder = new SqlCommandBuilder(adapter);            
            adapter.Update(personsTable);//无法更新服务器的数据库
        }

        private void button2_Click(object sender, EventArgs e)
        {
            T_PersonsTableAdapter adapter = new T_PersonsTableAdapter();
            adapter.Insert("john", 50);、、         
        }
    }
} --------------------编程问答-------------------- C#的内容建议去.net问问 --------------------编程问答-------------------- 跟类型无关,应该是你程序与数据库的连接有问题. --------------------编程问答--------------------
引用 2 楼 qianjin036a 的回复:
跟类型无关,应该是你程序与数据库的连接有问题.

不存在连接问题,表放到数据集中会自动生成配置文件型的连接字串,以及 强类型Dataset类名,查询服务器数据库依然正常,说明我的连接无问题,只是在修改字段值的时候 只修改了本地/bin/debug/DB1.dbf 而服务器的DB1.dbf没变。 --------------------编程问答--------------------
引用 3 楼 sullivan2008 的回复:
引用 2 楼 qianjin036a 的回复:
跟类型无关,应该是你程序与数据库的连接有问题.

不存在连接问题,表放到数据集中会自动生成配置文件型的连接字串,以及 强类型Dataset类名,查询服务器数据库依然正常,说明我的连接无问题,只是在修改字段值的时候 只修改了本地/bin/debug/DB1.dbf 而服务器的DB1.dbf没变。

关键是上面标红色的这句话,你自动生成的连接字符串有问题. --------------------编程问答-------------------- 呵呵,刚刚遇到这个为题:
我的也是 adapter.Update(personsTable),没法更新数据库。
解决办法如下:
在Program.cs 中的static void Main()里加如下代码,即可解决,注意加在Application.EnableVisualStyles();前面:

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);
            }
--------------------编程问答-------------------- 哈哈 ,感谢   。我经常忘记加这段代码 。 --------------------编程问答-------------------- 把 数据库档案的属性选项,改成 Copy if newer 就只会在你有异动数据库时才会盖掉 debug 裹的
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,