VerySource

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

为什么我的insertcommand无法自动取到参数

[复制链接]

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-1-16 13:20:01 | 显示全部楼层 |阅读模式
RT
在断点中可以发现,insertcommand已生成,但是无法取得参数,代码如下:
                    
OleDbDataAdapter jyda = new OleDbDataAdapter();
                    jyda.SelectCommand = new OleDbCommand("SELECT ID, 交易时间, 交易类型, 交易种类, 游戏, 区服, 账号, 密码, PIN, 人物名称, 付款方式, 交易额, 付款状态, 代练状态, 交易人, 交易平台, 通讯软件, 通讯软件ID, 电话, 任务时间, 完成时间, 详细说明 FROM JYDJL ", conn);

                    OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(jyda);
                    jyda.InsertCommand = commandBuilder.GetInsertCommand();
                    jyda.Fill(managerDataSet, "JYDJL");

                    DataRow itemrow = managerDataSet.JYDJL.NewRow();
                    // DataRow itemrow = serDataSet.servicingreportinfo.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();
                    jyda.Update(managerDataSet, "JYDJL");
回复

使用道具 举报

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-2-8 22:00:01 | 显示全部楼层
请哪位大大指点一下呀
回复

使用道具 举报

0

主题

14

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-11 09:15:02 | 显示全部楼层
jyda.InsertCommand = commandBuilder.GetInsertCommand();这句是多余的 去掉看看
回复

使用道具 举报

0

主题

14

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-11 10:00:01 | 显示全部楼层
另外 没看到你Add(itemrow)呀 我看花了???
回复

使用道具 举报

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-2-11 18:45:01 | 显示全部楼层
我经过调试发现,tableadapter中的parameters是取到了的,而且用TRY来试,想catch一下异常,结果没有异常.可是就是无法把数据添加到数据库中.
回复

使用道具 举报

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-2-11 19:30:02 | 显示全部楼层
有add(itemrow)的重贴一下:                    
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

主题

14

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-12 10:30:01 | 显示全部楼层
用CommandBuilder 必须为要更新的数据源建索引的 你的表索引是自增的吗 还是手动指定

另外 jyda.Fill(managerDataSet, "JYDJL"); 有没有把索引也Fill进来

跟踪一下dataset中的表 看看Add(itemrow)后 这个itemrow的索引是否正确
回复

使用道具 举报

0

主题

14

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-12 12:30:01 | 显示全部楼层
dataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
然后再执行Fill 可以把源表的约束也Fill到dataset中
回复

使用道具 举报

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-1 08:15:01 | 显示全部楼层
我把我的ID列设为了自增型的
回复

使用道具 举报

3

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-2 17:00:01 | 显示全部楼层
但是我的做插入的时候,insertcommand语名中没有对ID这一列进行插入啊,我想不会有影响的吧
回复

使用道具 举报

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

本版积分规则

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

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