调整初学者C#SQL Server INSERT示例以使用我的数据库

时间:2011-11-22 09:16:43

标签: c# asp.net .net sql-server database

我已经阅读了很多有关我的问题的教程,文章和其他内容,老实说,由于我缺乏经验,我无法扭曲这一点,所以我希望你们中的一些人可以帮助我:)

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

现在我想使用3个文本框和1个提交按钮将某些内容插入到我的数据库中。

我有3行必须插入:

  1. 标题
  2. 日期
  3. 内容/新闻本身。
  4. 从连接字符串存储在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
        }
    }
    

    我查看了这段代码并认为它​​应该很容易,但实际上,我无法弄明白。

4 个答案:

答案 0 :(得分:1)

  

这是一些让你前进的建议,学习编程很多   反复试验。

  1. 从表格/页面和a开始基本的,在文本框中放置三个文本框 按钮。

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

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

  4. 在Public Void Button_Click代码行中放置一个断点,然后按F11键 逐步完成代码。

  5.   

    “有一件事就是让代码隐藏起作用,但是如何使按钮和文本框工作仍然是一种痛苦”*

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

    cmd.Parameters.AddWithValue(“@ Address”,textBox1.Text);

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

    发布您在此处遇到的任何错误消息,当您确实让它工作时,额外的练习(对您来说非常有价值)将使用数据库存储过程而不是ad-hoc SQL来安全防范SQL - 注射攻击。

    我假设您安装了SQL Server,并且拥有一个名为EmployeeDetails的“员工”数据库。

答案 1 :(得分:1)

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;

        }
    }
}

答案 2 :(得分:0)

这很简单。您只需修改连接字符串,查询及其参数:

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
    }
}

答案 3 :(得分:0)

我根据您的要求更改了示例代码并添加了注释,希望您能够更清楚地了解最新情况:

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
    }
}

P.S。代码未经测试。当你说

  

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

实际上您的意思是想要record

插入fields