数据库连接,多表查询

zxq982139529 2010-07-04 09:52:11
想要查询:
SELECT student.姓名, class.班级名称, homework.作业编号, homework.作业名称, submit.是否已交, homework.需提交时间
FROM ((class INNER JOIN homework ON class.班级编号 = homework.班级编号) INNER JOIN student ON class.班级编号 = student.班级编号) INNER JOIN submit ON (student.学号 = submit.学号) AND (homework.作业编号 = submit.作业编号);显示在dataGridView。然后可以自己修改提交情况。请问要改如何处理?这是与access数据库连接的。谢谢了!
...全文
122 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingcsharp 2010-07-04
  • 打赏
  • 举报
回复
连接就是了吗,有什么问题吗?
ACCESS用OLE不是就可以吗?
zxq982139529 2010-07-04
  • 打赏
  • 举报
回复
似乎还是不行。
OleDbConnection conn = new OleDbConnection(connectionString);
string sql = "select * from submit";
DataSet ds = new DataSet();
OleDbDataAdapter adapter1;
adapter1 = new OleDbDataAdapter(sql, conn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter1);
adapter1.Update(ds);
dataGridView2.DataSource = ds.Tables[0];
请问这里有错吗?编译都出错了
wuyq11 2010-07-04
  • 打赏
  • 举报
回复
datagridview数据更新
使用OleDbDataAdapter
DataSet ds = new DataSet();
OleDbDataAdapter da;
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
da.Update(ds);
this.dataGridView1.DataSource = ds.Tables[0];
zxq982139529 2010-07-04
  • 打赏
  • 举报
回复
submit表没有主键的,好像都无法用dataGridView直接打开。用Update能方便的显示出一节方便的修改吗?
zzyhuian06142 2010-07-04
  • 打赏
  • 举报
回复
用OLEDBDataAdapter的Update方法来更新
但是不支持多表更新
bluedoctor 2010-07-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lijavasy 的回复:]
你的Connection不用Open吗?没有像你这么干过!
[/Quote]

啥时候Open数据库连接,完全由数据框架决定,它比你手工开关更有效率,比如把你的这个方法加入某个组件的事务中。默认的数据连接对象采用何种数据库类型,通过应用程序的配置文件生成,比如:

<Connections>
<add Name="SqlConn" ConnectionString="...." Provider="SqlServer" />
<!--<add Name="AccessConn" ConnectionString="...." Provider="OleDb" />-->
</Connections>
bluedoctor 2010-07-04
  • 打赏
  • 举报
回复
使用PDF.NET框架生成一个家庭作业的实体类:Homework,然后写如下代码:

Homework work=new Homework();
work.作业编号="xxxxxxx" //假定这是主键字段对应的属性
...为其它属性设置值

EntityQuery<Homework>.Update(work);//保存到数据库
lijavasy 2010-07-04
  • 打赏
  • 举报
回复
你的Connection不用Open吗?没有像你这么干过!
bluedoctor 2010-07-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pc_242 的回复:]
引用 7 楼 zxq982139529 的回复:
连接没问题,根据人生如梦的说法,我改了这样:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Environment.CurrentDirectory + "\\综合实验.mdb";
OleDbDataAdapter adapter1;
……
[/Quote]
这个说的正确,还是老老实实的血Update语句更新吧,如果不想写SQL,可以试试PDF.NET数据开发框架。
zxq982139529 2010-07-04
  • 打赏
  • 举报
回复
那具体要怎么改呢?怎样能实现那个功能?
zzyhuian06142 2010-07-04
  • 打赏
  • 举报
回复
DataSet ds = new DataSet();
ds现在没有表的,你更新肯定出错
pc_242 2010-07-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zxq982139529 的回复:]
连接没问题,根据人生如梦的说法,我改了这样:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Environment.CurrentDirectory + "\\综合实验.mdb";
OleDbDataAdapter adapter1;
DataSet ds= new Dat……
[/Quote]
c#复合查询不能update,必须自己写更新语句.
zxq982139529 2010-07-04
  • 打赏
  • 举报
回复
连接没问题,根据人生如梦的说法,我改了这样:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Environment.CurrentDirectory + "\\综合实验.mdb";
OleDbDataAdapter adapter1;
DataSet ds= new DataSet() ;

private void button3_Click(object sender, EventArgs e)
{
try
{
OleDbConnection conn = new OleDbConnection(connectionString);
//string sql = "SELECT student.姓名, class.班级名称, homework.作业编号, homework.作业名称, submit.是否已交, homework.需提交时间 FROM ((class INNER JOIN homework ON class.班级编号 = homework.班级编号) INNER JOIN student ON class.班级编号 = student.班级编号) INNER JOIN submit ON (student.学号 = submit.学号) AND (homework.作业编号 = submit.作业编号);";
string sql = "select * from student";
DataSet ds = new DataSet();
adapter1 = new OleDbDataAdapter(sql, conn); OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter1);
adapter1.Update(ds);
dataGridView2.DataSource = ds.Tables[0];
tablenull = true;
}
catch (OleDbException err)
{
MessageBox.Show(err.Message, "打开失败!");
}

}

是想能实现多个表的数据都连到dataGridView。但是运行时错误:adapter1.Update(ds); Update 无法找到 TableMapping['Table'] 或 DataTable“Table”。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧