VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1087|回复: 10

无法把数据添加到数据库中,为什么呀

[复制链接]

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-2-5 09:00:01 | 显示全部楼层 |阅读模式
说明,managerDataSet,jYDJLTableAdapter都是系统进行数据绑定后生成的,所以不需要手工给出insertcommand.在断点中我可以查到managerDataSet被成功的添加了新的行,但是tableadapter确无法把新行用insert的方法添加到数据库中.为什么会这样呢.
DataRow itemrow = managerDataSet.JYDJL.NewRow();                    
                    itemrow["交易时间"] = dateTimePicker1.Value;
                    itemrow["交易类型"] = comboBox1.Text.ToString().Trim();
                    itemrow["交易种类"] = comboBox2.Text.ToString().Trim();
                    itemrow["游戏"] = comboBox3.Text.ToString().Trim();
                    itemrow["区服"] = textBox4.Text.ToString().Trim();
                    itemrow["账号"] = textBox5.Text.ToString().Trim();
                    itemrow["PIN"] = textBox6.Text.ToString().Trim();
                    itemrow["人物名称"] = textBox7.Text.ToString().Trim();
                    itemrow["付款方式"] = comboBox4.Text.ToString().Trim();
                    itemrow["交易额"] = d;
                    itemrow["付款状态"] = comboBox5.Text.ToString().Trim();
                    itemrow["代练状态"] = comboBox6.Text.ToString().Trim();
                    itemrow["交易人"] = textBox9.Text.ToString().Trim();
                    itemrow["交易平台"] = comboBox7.Text.ToString().Trim();
                    itemrow["通讯软件"] = comboBox8.Text.ToString().Trim();
                    itemrow["通讯软件ID"] = textBox10.Text.ToString().Trim();
                    itemrow["电话"] = textBox11.Text.ToString().Trim();
                    if (textBox12.Text.Trim() != "")
                    {
                        itemrow["任务时间"] = dateTimePicker2.Value;
                    }
                    if (textBox13.Text.Trim() != "")
                    {
                        itemrow["完成时间"] = dateTimePicker3.Value;
                    }
                    itemrow["详细说明"] = richTextBox1.Text.ToString().Trim();
                    managerDataSet.JYDJL.Rows.Add(itemrow);
                    jYDJLBindingSource.EndEdit();
                    try
                    {
                        jYDJLTableAdapter.Update(managerDataSet.JYDJL);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("添加失败!失败原因:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
回复

使用道具 举报

0

主题

52

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-3-23 16:45:01 | 显示全部楼层
managerDataSet.AcceptChanges();
回复

使用道具 举报

0

主题

110

帖子

63.00

积分

新手上路

Rank: 1

积分
63.00
发表于 2020-3-23 23:45:01 | 显示全部楼层
用CommandBuilder了吗?
回复

使用道具 举报

0

主题

110

帖子

63.00

积分

新手上路

Rank: 1

积分
63.00
发表于 2020-3-24 09:45:01 | 显示全部楼层
用法见MSDN:

for examele:
public DataSet CreateCmdsAndUpdate(DataSet dataSet, string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here
        //这里添加你对表的更改..

        adapter.Update(customers);

        return customers;
    }
}
回复

使用道具 举报

0

主题

52

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-3-24 11:30:02 | 显示全部楼层
是哦 刚才没看仔细

更新时 如果没用CommandBuilder自动生成sql语句 那么需要手动的指定InsertCommand,selectCommand,UpdateCommand哦
回复

使用道具 举报

0

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-25 19:15:02 | 显示全部楼层
需要用CommandBuilder自动生成sql语句
回复

使用道具 举报

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-26 16:00:01 | 显示全部楼层
这个tableadapter是系统生成的,已经有了insertcommand,还需要我手动来指定吗?
managerDataSet.AcceptChanges()也添加到了中间,结果还是没有用呀.
回复

使用道具 举报

0

主题

110

帖子

63.00

积分

新手上路

Rank: 1

积分
63.00
发表于 2020-3-27 21:30:01 | 显示全部楼层
系统自动生成的?

还是觉得自己写比较爽,最起码自己可以控制,出错了也容易查找..
回复

使用道具 举报

0

主题

52

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-3-29 15:30:01 | 显示全部楼层
更新时 你再次指定试一下就知道了
回复

使用道具 举报

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-31 09:15:02 | 显示全部楼层
我上面用的是tableadapter,不知道和da.update有什么区别.tableadapter好像是不能进行commandbuilder的.这样的话要怎么样写insertcommand呢?
另外,psycholmu,你指的再次指定是什么意思呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表