根据列表框中选择的内容,从SQL数据库中打开并删除存储的字符串

时间:2016-09-22 04:59:06

标签: c# sql sql-server listbox

我有一个非常基本的程序,我正在编写以习惯使用visual studio。该程序的主窗口包含一个名为listBox1的列表框,一个名为richTextBox1的富文本框,以及几个按钮,这些按钮执行各种操作以从名为DocStorage的表中获取数据,该表具有名为{{1的列存储来自richTextBox1的任何单词作为数据库中的新行。

我设法让保存功能正常工作,它从richTextBox1获取任何文本并将数据库中的存储作为一行,没问题。

现在我需要为DocumentNameDELETE按钮编码。 OPEN按钮应该从SQL Server数据库中删除一条记录,这很简单,但我无法弄清楚如何根据用户推送{{1之前从listBox1中选择的项目来创建它名为DELETE的按钮。

我还希望能够反向工作DELETE,根据用户在listBox1中选择的项目,然后在推送名为{{BtnDelete的按钮之前,将字符串存储回richTextBox1 1}}。

尝试从网上实现类似的例子经过多次尝试证明是不成功的,会在正确的方向上获得一些指导,所以我可以了解编码这些按钮的错误。

我是初学者,所以请原谅我的无知并帮助我完成第一个应用程序的最后两个按钮!

以下是我OPEN

代码的摘要
OPEN

提前致谢。

2 个答案:

答案 0 :(得分:0)

你走在正确的轨道上 - 还没到那里......

有几件事:

  • 首先,你打开using(....) { .... }然后在下一行再次创建它 - 从头开始​​ - 这没有任何意义.....
  • 您永远不会执行查询 - 您正在构建它,添加参数值以及所有 - 但您实际上从未正在运行代码!
  • 您应该使用if (MessageBow.Show("Are you sure you want to Delete this File?", "Open File", MessageBoxButtons.YesNo) == DialogResult.Yes) { // define connection string (load from config) and query statement string connStr = "......."; string qryDelete = "DELETE [DocumentName] FROM DocStorage WHERE DocumentName = @DocShred"; // set up the connection and command using (SqlConnection con = new SqlConnection(connStr)) using (SqlCommand cmd = new SqlCommand(qryDelete, con)) { cmd.Parameters.Add(new SqlParameter("@DocShred", listBox1.SelectedItem.ToString()); // open connection, execute query, close connection con.Open(); int rowsAffected = cmd.ExecuteNonQuery(); con.Close(); } MessageBox.Show("Delete Successful", "File Deleted", MessageBoxButtons.Ok); } 块来确保正确处理资源

试试这段代码:

DBObject query = new BasicDBObject("ap_domain", "root").append("ssid_shaper_list.SSID2.ssid_domain", "root");

答案 1 :(得分:0)

我运行了这个稍微修改过的版本......

private void BtnDelete_Click(object sender, EventArgs e)
        {
            string TrashedDoc = listBox1.SelectedItem.ToString();

            if (MessageBox.Show("Are you sure you want to Delete this File?", "Delete File", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {

                string connStr = @"...............";
                string qryDelete = "DELETE FROM [DocStorage] WHERE DocumentName = @DocShred";

                using (SqlConnection con = new SqlConnection(connStr))
                using (SqlCommand cmd = new SqlCommand(qryDelete, con))
                {
                    cmd.Parameters.Add(new SqlParameter("@DocShred", TrashedDoc));

                    con.Open();
                    int rowsAffected = cmd.ExecuteNonQuery();
                    con.Close();
                }

                /// if the Delete is successful a message box confirms to user

                MessageBox.Show("Delete Successful", "File Deleted", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

虽然代码运行正常,但由于某种原因它实际上并没有从数据库中删除列表框中的选定项目,它只是给出了一个Delete Successful消息。刷新数据库确认它没有删除任何内容。