作者cross0619 ()
看板C_Sharp
标题[问题] 资料库自动重新连结
时间Wed Jun 2 17:23:39 2010
各位大大们好
小弟我在练习时碰到一个问题
就是我有一个listbox选单 他连结了一个资料库 我有新增,更新,删除功能的按钮
当我按下去的时候 资料库的确会执行我的新增,更新,删除的动作
但是listbox并不会自动更新
我有在执行完新增,更新,删除的动作之後打上
this.iPodTableAdapter.Fill(this.iPodsDataSet.iPod);
我的资料库名称是iPods 里头的资料表名称是iPod
这一行是在我用listbox连结资料库後,自动生成在Form1_Load里头
所以我想说用这行就能自动更新,但这方法似乎不可以...
有大大们可以指导一下吗 像是要用什麽指令之类的
只缺这个新增,更新,删除後的再次连结我的练习就完成拉
先谢过了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.183.236
1F:→ pico2k:请附上完整的程式码 06/02 17:31
public void AccessDelete()
{
OleDbConnection thisConnection = new OleDbConnection("Provider=
Microsoft.Jet.OLEDB.4.0;Data Source=../../iPods.mdb;");
(这行太长所以小弟分成两行)
thisConnection.Open();
string str = "Delete FROM iPod where Name =('" + listBox1.Text + "')";
OleDbCommand thisCommand = new OleDbCommand(str, thisConnection);
thisCommand.ExecuteNonQuery();
thisConnection.Close();
this.iPodTableAdapter.Fill(this.iPodsDataSet.iPod);
桧项
}//这是小弟我写的删除资料库资料的程式码
private void Form1_Load(object sender, EventArgs e)
{
//TODO:这行程式码会将资料载入'iPodDateSet'资料表,您可以视进行移动
// 或移除
this.iPodTableAdapter.Fill(this.iPodsDataSet.iPod);
}//只要我listbox完成了资料连结的动作,就会自动产生这行程式码
因为这样小弟我把这行程式码当作是对资料库的连结
所以才贴在删除的那个函式(AccessDelete)里头,想说进行完删除动作後
listbox也会自动更新,但似乎没什麽用....先谢过1楼大大了
※ 编辑: cross0619 来自: 118.167.183.236 (06/02 17:49)
2F:→ allenstyle:您在进行新增、删除、修改时都要记得在那个动作後,重 06/02 21:25
3F:→ allenstyle:新 bind 那些资料,就可以达到你要的效果! 06/02 21:26
可以麻烦allenstyle大大详细说明一下吗
头一次使用资料连结 不知道那个bind怎麽用... 先谢过了
※ 编辑: cross0619 来自: 118.167.183.236 (06/02 21:57)
刚刚乱试了一堆东西 看来没人指导还是挺难理解的
想说用listbox里头的add跟remove来凑和
但是也不行 会出现资料已系节 无法修改 这样的错误
拜托有知道的大大指导一下了 先谢过
※ 编辑: cross0619 来自: 118.167.183.236 (06/02 23:25)
4F:→ andymai:应该只是需要再执行一次listbox的DataBind方法? 06/02 23:33
可以麻烦大大详细指导一下吗 我刚刚有试过这方法,可是我不知道怎麽使用
再次谢过M(_ _)M
※ 编辑: cross0619 来自: 118.167.183.236 (06/02 23:41)
5F:→ andymai:就像allenstyle说的在动作後执行listBox.DataBind();这样 06/02 23:46
6F:→ andymai:不行吗? 06/02 23:46
嗯 listbox只有listBox1.DataBindings
而且listBox1.DataBindings(); 还有错误 讯息是 不能当成方法使用
※ 编辑: cross0619 来自: 118.167.183.236 (06/02 23:54)
7F:→ andymai:Oh! My God!您是在设计WinForm程式而不是WebForm~我都忘了 06/02 23:59
8F:→ andymai:我在前面有回过文~大概是被推文误导了(牵拖) 如果是这样~ 06/03 00:00
9F:→ andymai:其实只要动作完再给一次DataSource就好了... 06/03 00:00
是这样吗 listBox1.DataSource = 资料库路径吗;
但我listBox1DataSource = "../../iPods";这样用
会有这样的错误讯息 复杂 DataBinding 接受以 IList 或 IListSource 做为资料来源。
烦请大大再教一下吧 快被烦死了....就只差这麽一步
※ 编辑: cross0619 来自: 118.167.183.236 (06/03 00:06)
10F:→ andymai:不是~是要给Fill方法里面那个this.iPodsDataSet.iPod 06/03 00:14
11F:→ andymai:DataSource = this.iPodsDataSet.iPod.Tables[0]; 06/03 00:15
12F:→ andymai:可能要先去MSDN翻一下目前为止用到的方法和属性~不然可能 06/03 00:16
13F:→ andymai:会有问不完的问题~或是找一本说明详尽的书也可以... 06/03 00:17
刚刚用大大的DataSource = this.iPodsDataSet.iPod.Tables[0];
有问题呢 我改成this.iPodsDataSet.iPod[].Tables; 反倒可以
但还是没有我要的效果 很感谢andymai大大的指导 我会再去查资料
没想到一个重新连结竟然这麽难搞...
当然还是希望大大们可以不吝提供解说XD
※ 编辑: cross0619 来自: 118.167.183.236 (06/03 00:45)
14F:→ andymai:?Fill里面不是只能放DataSet吗?我想知道那iPod是什麽类别 06/03 01:03
15F:→ andymai:囧~刚刚看到VS提示的Fill没多载就怀疑了~没想到去MSDN查~ 06/03 01:07
16F:→ andymai:果然是有滴!!!用惯了别人的api~现在连基本的都忘了Orz... 06/03 01:07
iPod是一个资料库 我把它给加入到专案里头
左边工具箱就自动多出iPodDateSet,iPodTableAdapter,TableAdapterManager这三个元件
设计页面多出iPodSet,iPodBindinfSource,iPodTableAdapterManager三个元件
像是拉进timer那样子 this.iPodsDataSet.iPod 这行程式码是自动生出来的
我也搞不清楚iPod是什麽类别
我找到问题所在了
我资料库读取路径打错
OleDbConnection thisConnection = new OleDbConnection("Provider=
Microsoft.Jet.OLEDB.4.0;Data Source=../../iPods.mdb;");
路径打错了.... 谢谢各位的帮助了
※ 编辑: cross0619 来自: 210.60.11.157 (06/03 10:38)
17F:→ wayren:你只是要简单的I/O功能,基本上只要ConnectionString对, 06/15 06:21
18F:→ wayren:T-SQL的语法对,就能够被执行。我好奇的是,你的DB里面只有 06/15 06:22
19F:→ wayren:一栏(Column)的资料吗? Delete * From iPod Where ..... 06/15 06:25
20F:→ wayren:多个 * 会比较像是标准的写法.... 06/15 06:26
21F:→ wayren:另外你说的iPod只是你资料库的名称....当然不是甚麽类别。 06/15 06:29
22F:→ wayren: 表 06/15 06:30