SqlDataAdapter查询数据库与填表问题,求助

一线Jon 2019-07-14 06:34:49
新人, 拿着教材练习中, ,,,,,,
使用SqlDataAdapter查询数据库中的三张表;再分别填充到DataSet里面, 明明查询与填充的是三张表, 可以为什么断点显示有4张表?Table[0],Table[1]数据正确, Table[2]无数据, 本来应该填在Table[2]中的数据填在了Table[3], 求助......

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;

namespace Chapter7_DataGridView
{
public partial class Form1 : Form
{
private SqlDataAdapter sdaDiary;// 声明SqlDataAdapter对象sdaDiary
private SqlDataAdapter sdaCategory;// 声明SqlDataAdapter对象sdaDiary
private SqlDataAdapter sdaCategoryDetail;// 声明SqlDataAdapter对象sdaDiary
private DataSet dsDiary;// 声明DataTable对象dsDiary
private DataTable dtDiary;
private DataTable dtCategory;
private DataTable dtCategoryDetail;
private string sqlConn = ConfigurationManager.ConnectionStrings["sqlConn"].ToString();// 读取app.config的连接数据
public Form1()
{
InitializeComponent();
}

/// <summary>
/// 窗体加载方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "DataGridView增删改";
dsDiary = new DataSet();

string sqlStrDiary = "select * from Diary";
sdaDiary = new SqlDataAdapter(sqlStrDiary, sqlConn);
dtDiary = new DataTable("Diary");
dsDiary.Tables.Add(dtDiary);
sdaDiary.Fill(dsDiary, "Diary");//填表

string sqlStrCategory = "select CategoryName from Category";
sdaCategory = new SqlDataAdapter(sqlStrCategory, sqlConn);
dtCategory = new DataTable("Category");
dsDiary.Tables.Add(dtCategory);
sdaCategory.Fill(dsDiary, "Category");

string sqlStrCategoryDetail = "select CategoryDetailName from CategoryDetail";
sdaCategoryDetail = new SqlDataAdapter(sqlStrCategoryDetail, sqlConn);
dtCategoryDetail = new DataTable("CategoryDetail");
dsDiary.Tables.Add(dtCategoryDetail);
sdaCategoryDetail.Fill(dsDiary, "CategoryDetial");


// SetupColumns(dsDiary); //DataGridView界面定制
// dgvTable.AutoGenerateColumns = false;//不自动创建表格
//dgvTable.RowTemplate.Height = 20;//行高

this.dgvTableDiary.DataSource = dsDiary.Tables[0];//绑定table0到DataGridView的数据源
this.dgvTableCategory.DataSource = dsDiary.Tables[1];
this.dgvTableCategoryDetail.DataSource = dsDiary.Tables[2];

SqlCommandBuilder scb = new SqlCommandBuilder(sdaDiary);//建立增删改自动命令
sdaDiary.InsertCommand = scb.GetInsertCommand();
sdaDiary.UpdateCommand = scb.GetUpdateCommand();
sdaDiary.DeleteCommand = scb.GetDeleteCommand();
}

/// <summary>
/// 执行DataGridView自动更新数据库
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnSave_Click(object sender, EventArgs e)
{
sdaDiary.Update(dsDiary);
}
}
}


...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一线Jon 2019-07-15
  • 打赏
  • 举报
回复
引用 4 楼 f**kcsdn 的回复:
不是同一张表 注意拼写 dtCategoryDetail = new DataTable("CategoryDetail"); dsDiary.Tables.Add(dtCategoryDetail); sdaCategoryDetail.Fill(dsDiary, "CategoryDetial");
谢谢,果然拼写错误,感谢
csdnFUCKINGSUCKS 2019-07-15
  • 打赏
  • 举报
回复
不是同一张表 注意拼写 dtCategoryDetail = new DataTable("CategoryDetail"); dsDiary.Tables.Add(dtCategoryDetail); sdaCategoryDetail.Fill(dsDiary, "CategoryDetial");
ManBOyyy 2019-07-15
  • 打赏
  • 举报
回复
要不就用datatable,別用dataset
一线Jon 2019-07-14
  • 打赏
  • 举报
回复
引用 1 楼 早起晚睡 的回复:
不知道你这个想做什么
这个问题跟想做什么没有关系, 现在的问题是fill了三张表,内存中却出现了四张,本来第三张表的内容跑到了的四张表里,第三张表内容是空的
早起晚睡 2019-07-14
  • 打赏
  • 举报
回复
不知道你这个想做什么

110,546

社区成员

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

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

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