适应初学者c# SQL Server INSERT示例与我的数据库工作

本文关键字:我的 数据库 工作 INSERT 初学者 SQL Server | 更新日期: 2023-09-27 18:15:19

我已经阅读了大量关于我的问题的教程,文章和任何东西,老实说,由于我缺乏经验,我无法扭转我的手指在这个问题上,所以我希望你们中的一些人可以帮助我:)

我正在做一个项目(只是为了学习如何编程,所以它可能是非常基本的),但我有这个"新闻"页面,我可以使用GridView更新和删除数据。

现在我想插入一些东西到我的数据库使用3个文本框和1个提交按钮。

我有3行必须插入:

    标题
  1. 内容/新闻本身。

存储在NyhedTB下的连接字符串:BoligStjernenConnectionString

我的查询是这样的:

INSERT INTO [NyhedTB] ([NyhedDato], [NyhedTitel], [NyhedTekst])
VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)

我在网上看到这段代码应该为我做的魔术(我将不得不插入我自己的值的c.):

static void Insert()
{
    try
    {
        string connectionString =
            "server=.;" +
            "initial catalog=employee;" +
            "user id=sa;" +
            "password=sa123";
        using (SqlConnection conn =
            new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlCommand cmd =
                new SqlCommand("INSERT INTO EmployeeDetails VALUES(" +
                    "@Id, @Name, @Address)", conn))
            {
                cmd.Parameters.AddWithValue("@Id", 1);
                cmd.Parameters.AddWithValue("@Name", "Amal Hashim");
                cmd.Parameters.AddWithValue("@Address", "Bangalore");
                int rows = cmd.ExecuteNonQuery();
                //rows number of record got inserted
            }
        }
    }
    catch (SqlException ex)
    {
        //Log exception
        //Display Error message
    }
}

我看了这段代码,认为它应该很容易,但实际上,我不能弄清楚。

适应初学者c# SQL Server INSERT示例与我的数据库工作

这里有一些建议让你开始,学习编程是很多的试错。
  1. 从基础开始,在表单/页面上放三个文本框和一个按钮。

  2. 双击按钮进入代码隐藏并查看按钮单击事件。

  3. 粘贴问题中包含的代码体(try-catch中的所有内容)。

  4. 在Public Void Button_Click代码行上设置一个断点,然后按F11来

"一件事是让代码在后台工作,但如何使按钮和文本框工作仍然是一个痛苦"*

将文本框作为值,而不是硬编码的值:

cmd.Parameters。AddWithValue("@ address",textBox1.Text);

您也不应该插入Id值,而是修改EmployeeDetails表并将Id列设置为属性集Identity Specification (IS Identity) = True。然后右键单击ID列,设置"主键"。

在这里发布您遇到的任何错误消息,当您设法使其正常工作时,一个额外的练习(对您将非常有价值)将使用数据库存储过程而不是特别的SQL,以防止SQL注入攻击。

我假设你已经安装了SQL Server,并有一个名为EmployeeDetails的'雇员'数据库。

protected void GvManualShows_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //label lbl = (label)e.Row.FindControl("lblHidden");
        if (e.Row.Cells[14].Text == "Y")
        {
            // CheckBox cb = (CheckBox)e.Row.FindControl("chk");
            CheckBox chk = (CheckBox)e.Row.Cells[0].FindControl("chkBox");
            chk.Checked = true;
        }
    }
}

这相当简单。您只需要修改连接字符串、查询及其参数:

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        string connectionString =
            "server=SQLServer;" +         // SQLServer is your SQL server machine
            "initial catalog=employee;" + // employee is your database
            "user id=sa;" +               // sa is the login to connect the database
            "password=sa123";             // sa123 is the password of the login
        using (SqlConnection conn =
            new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand(
                "INSERT INTO [NyhedTB] ([NyhedDato], [NyhedTitel], [NyhedTekst]) " +
                "VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)", conn))
            {
                cmd.Parameters.AddWithValue("@NyhedDato", textBoxDate.Text);
                cmd.Parameters.AddWithValue("@NyhedTitel", textBoxTitle.Text);
                cmd.Parameters.AddWithValue("@NyhedTekst", textBoxBody.Text);
                int rows = cmd.ExecuteNonQuery();  // Inserted rows number
            }
        }
    }
    catch (SqlException ex)
    {
        //Log exception
        //Display Error message
    }
}

我根据您的要求更改了示例代码并添加了注释,希望您能更清楚地了解发生了什么:

static void Insert()
{
    try
    {
        string connectionString =
        "server=.;" +
        "initial catalog=MyDatabaseName;" + //here you write database name where your NyhedTB table is
        "user id=sa;" + //user name to connect to database
        "password=sa123"; //password
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlCommand cmd =
              new SqlCommand("INSERT INTO NyhedTB (NyhedDato, NyhedTitel, NyhedTekst) VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)", conn))
            {
                //all "things" in your sql command what beggins with @ 
                //means that it is parameter and you need to pass values for these parameters: 
                //For @NyhedDato parameter you set text from your textbox
                cmd.Parameters.AddWithValue("@NyhedDato", txtDate.Text);
                //For @NyhedTitel parameter you set text from title textbox
                cmd.Parameters.AddWithValue("@NyhedTitel", txtTitle.Text);
                //For @NyhedTekst parameter you set text from content textbox
                cmd.Parameters.AddWithValue("@NyhedTekst", txtContent.Text);
                //Execute insert command and get how many records was efected, in this case it should be rows = 1 because you inserting just one record
                int rows = cmd.ExecuteNonQuery();
            }
        }
    }
    catch (SqlException ex)
    {
       //Log exception
       //Display Error message
    }
}

注。未测试的代码。当你说

我有3行必须插入:标题日期内容/新闻本身。

实际上你的意思是你想用fields

插入record