Использование VS2010 с SqlClient и SQL Server 2012

У меня небольшая проблема со вставкой данных из моего приложения в мою базу данных. Я не получаю никаких ошибок при подключении или попытке вставки в базу данных, но данные просто не вставляются. Я использую Visual Studio 2010 с C# и SqlClient и SQL Server 2012 Management Studio.

Вот мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Configuration;
using System.Data;
using System.Data.SqlClient;

 <summary>
 Summary description for Sources
 </summary>
public class Sources
{
    private string conString;
    public int mSourceID;
    public string mSourceName;
    public int mActive;

    public Sources()
    {   
        conString = WebConfigurationManager.ConnectionStrings["dbconstring"].ConnectionString;
        mSourceID = 0;
        mSourceName = "";
        mActive = 0;
    }

    public void insertData()
    {
        using (SqlConnection con = new SqlConnection(conString))
        {
            con.Open();
            try
            {
                using (SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Sources(SourceID, SourceName, Active) VALUES(@SourceID, @SourceName, @Active)", con))
                {
                    cmd.Parameters.Add(new SqlParameter("SourceID", mSourceID));
                    cmd.Parameters.Add(new SqlParameter("SourceName", mSourceName));
                    cmd.Parameters.Add(new SqlParameter("Active", mActive));
                }
            }
            catch (Exception Ex)
            {
                Console.WriteLine("Unable To Save Data. Error - " + Ex.Message);
            }
        }
    }
}

А вот событие нажатия кнопки:

protected void btnOk_Click(object sender, ImageClickEventArgs e)
    {
        Sources src = new Sources();
        src.mSourceID = 1;
        src.mSourceName = "aboa";
        src.mActive = 0;
        src.insertData();
    }

Я проверил отладчик и не получаю никаких ошибок, когда я нажимаю кнопку, но когда я проверяю свою таблицу в своей базе данных, она остается пустой.


person Blank EDjok    schedule 16.06.2013    source источник


Ответы (2)


Вам нужно выполнить свой запрос, используя ExecuteNonQuery. Проверьте приведенный ниже код.

public void insertData()
        {
            using (SqlConnection con = new SqlConnection(conString))
            {
                con.Open();
                try
                {
                    using (SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Sources(SourceID, SourceName, Active) VALUES(@SourceID, @SourceName, @Active)", con))
                    {
                        cmd.Parameters.Add(new SqlParameter("SourceID", mSourceID));
                        cmd.Parameters.Add(new SqlParameter("SourceName", mSourceName));
                        cmd.Parameters.Add(new SqlParameter("Active", mActive));
    cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception Ex)
                {
                    Console.WriteLine("Unable To Save Data. Error - " + Ex.Message);
                }
            }
        }
person Karthik    schedule 16.06.2013
comment
Большое спасибо, это решило проблему, вы, ребята, всегда так полезны. - person Blank EDjok; 16.06.2013

Вам нужно выполнить nonquery, потому что вы не возвращаете какие-либо данные, которые вы только вставляете, и вам также нужен блок finally, чтобы гарантировать, что даже если есть исключение, соединение будет закрыто

public void insertData()
        {
            using (SqlConnection con = new SqlConnection(conString))
            {
                con.Open();
                try
                {
                    using (SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Sources(SourceID, SourceName, Active) VALUES(@SourceID, @SourceName, @Active)", con))
                    {
                        cmd.Parameters.Add(new SqlParameter("SourceID", mSourceID));
                        cmd.Parameters.Add(new SqlParameter("SourceName", mSourceName));
                        cmd.Parameters.Add(new SqlParameter("Active", mActive));
                        cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception Ex)
                {
                    Console.WriteLine("Unable To Save Data. Error - " + Ex.Message);
                }
                finally
                {
                    con.Close();
                }
            }
        }
person terrybozzio    schedule 16.06.2013