在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);、、
}
}
}
{
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);、、
}
}
}
我的也是 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);
}