Ricardo·M·Smile 2015-05-12 14:19 采纳率: 75%
浏览 2243
已采纳

SCOPE_IDENTITY() AS INT;返回值的问题,求请前辈们教诲。感激不尽,小子拜谢。

比如说我里面有三行数据我添加商品如图
图片说明
添加成功之后
到VS调试。。如图点击右键添加商品菜单之后
图片说明
调试第一次添加成功(添加了几项)
图片说明
但是问题来了随后删除不了添加的商品找不到tag属性保存的Id。如图
图片说明
我试着再次调试发现可以删除了(删除完)。
让后我用f5调试发现其实在添加ID是保存了的。
最大问题来了。在进行之前的操作之后。再次调试添加就会发生我最为疑惑事。
通过select CAST(SCOPE_IDENTITY() AS INT)返回值
tag的值无论进行多少次添加都是数字1。不知道为什么。各位前辈求解??拜谢
VS代码如下:
private void Form2_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = DBHelper.query("select CardsId,CardsName from Cards");
for (int i = 0; i < dt.Rows.Count; i++)
{
treeView1.Nodes[0].Nodes.Add(dt.Rows[i]["CardsName"].ToString());var node = treeView1.Nodes[0].Nodes[treeView1.Nodes[0].Nodes.Count - 1];
node.ImageIndex = 1;
node.SelectedImageIndex = 0;
node.ContextMenuStrip = contextMenuStrip1;
node.Tag = dt.Rows[i]["CardsId"];
}
}

    private void 添加商品ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        int id = DBHelper.cute("INSERT INTO Cards VALUES ('新商品')SELECT @@IDENTITY AS 'Identity'");
        if(id <= 0)
        {
            MessageBox.Show("添加失败。");
            return;
        }
       //添加商品
        var node = treeView1.Nodes[0].Nodes.Add("新品牌");
        node.ImageIndex = 1;
        node.SelectedImageIndex = 0;
       //绑定菜单
        node.ContextMenuStrip = contextMenuStrip1;
        //保存节点
        node.Tag = id;
       //找到选择项
        treeView1.SelectedNode = node;
       //开始编辑
       node.BeginEdit();
    }

    private void 删除商品ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string id  = treeView1.SelectedNode.Tag.ToString();
        int num = DBHelper.execute(string.Format("DELETE FROM Cards WHERE CardsId = ") + id);
        if (num > 0)
        {
            treeView1.Nodes[0].Nodes.Remove(treeView1.SelectedNode);
        }
        else {
            MessageBox.Show("删除失败");
        }
    }

    private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        treeView1.SelectedNode.BeginEdit();
    }

    private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
    {
        if(e.Label == null)
        {
            e.CancelEdit = true;
            return;
        }
        DialogResult dr = MessageBox.Show("是否修改商品信息", "修改", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (DialogResult.No == dr)
        {
            e.CancelEdit = true;
            return;
        }
        string id = treeView1.SelectedNode.Tag.ToString();
        string sql = string.Format("update Cards set CardsName  = '{0} ' where CardsId = {1}", e.Label, id);
        int num = DBHelper.execute(sql);
        if (num <= 0)
        {
            e.CancelEdit = true;
            MessageBox.Show("保存失败");
        }
        else {
        }
    }
  • 写回答

2条回答 默认 最新

  • 知常曰明 2015-05-12 22:22
    关注

    你的DBHelper.execute返回的是影响的行数,不是select的结果吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条