程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 2010-SCOPE_IDENTITY() AS INT;返回值的問題,求請前輩們教誨。感激不盡,小子拜謝。

2010-SCOPE_IDENTITY() AS INT;返回值的問題,求請前輩們教誨。感激不盡,小子拜謝。

編輯:編程綜合問答
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 {
        }
    }

最佳回答:


你的DBHelper.execute返回的是影響的行數,不是select的結果吧

gamefinity
gamefinity
baidu_28081035
baidu_28081035
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved