Как вставить запись в таблицу базы данных SQL Server Express? - PullRequest
3 голосов
/ 20 февраля 2012

Я пытаюсь вставить значение текстового поля в таблицу базы данных с именем site_list.

Таблица site_list содержит два столбца id и site_name, id с автоматическим приращением

Это код, который я пытаюсь выполнить, и при его выполнении ошибки не возникает, но данные не отображаются в таблице

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
             "Data Source=.\\SQLExpress;" +
             "User Instance=true;" +
             "Integrated Security=true;" +
             "AttachDbFilename=|DataDirectory|scraper_db.mdf;";            

SqlCommand addSite = new SqlCommand("INSERT INTO site_list (site_name) "
     + " VALUES (@site_name)", conn);

addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = textBox1.Text;

conn.Open();
addSite.ExecuteNonQuery();
conn.Close();

Любая помощь будет оценена.

Привет

Edit:

Этот код начал работать

    string connstring = "Data Source=.\\SQLExpress;"+
                        "Integrated Security=true;"+
                        "User Instance=true;"+
                        "AttachDBFilename=|DataDirectory|scraper_db.mdf;"+
                        "Initial Catalog=scraper_db";

    using (SqlConnection connection = new SqlConnection(connstring))
    {
        connection.Open();
        SqlCommand addSite = new SqlCommand("INSERT INTO site_list (site_name)"+
                             "VALUES (@site_name)", connection);
        addSite.Parameters.AddWithValue("@site_name", textBox1.Text); 
        addSite.ExecuteNonQuery();
        connection.Close();
    }

Ответы [ 5 ]

3 голосов
/ 20 февраля 2012

, как предлагают люди, попробуйте создать базу данных на сервере (это будет еще проще, если использовать Sql Management Studio ). Как только это будет сделано, попробуйте следующее (только что протестировано, и оно работает):

using (SqlConnection conn = new SqlConnection(@"Persist Security Info=False;Integrated Security=true;Initial Catalog=myTestDb;server=(local)"))
{
    SqlCommand addSite = new SqlCommand(@"INSERT INTO site_list (site_name) VALUES (@site_name)", conn);
    addSite.Parameters.AddWithValue("@site_name", "mywebsitename");
    addSite.Connection.Open();
    addSite.ExecuteNonQuery();
    addSite.Connection.Close();
}
2 голосов
/ 16 августа 2012
try
{
    using (SqlConnection conn = new SqlConnection(@"Persist Security Info=False;Integrated Security=true;Initial Catalog=myTestDb;server=(local)\SQLEXPRESS;database=Inventory;Data Source=localhost\SQLEXPRESS;"))
    {
        SqlCommand addSite = new SqlCommand(@"INSERT INTO Creation (Name,Product,Quantity,Category) VALUES (@Name,@Product,@Quantity,@Category)", conn);
        addSite.Parameters.AddWithValue("@Name", textBox1.Text);
        addSite.Parameters.AddWithValue("@Product", textBox2.Text);
        addSite.Parameters.AddWithValue("@Quantity", textBox3.Text.ToString());
        addSite.Parameters.AddWithValue("@Category", textBox4.Text);
        thisConnection.Open();
        addSite.ExecuteNonQuery();
    }
}
catch
{
    thisConnection.Close();
}
1 голос
/ 20 февраля 2012

попробуйте это:

string sql = String.Format("INSERT INTO site_list (site_name) VALUES('{0}')", myTextBox.Text);
using(SqlConnection connection = new SqlConnection(myConnectionString))
{
   connection.open();
   using(SqlCommand cmd = new SqlCommand(sql, connection))
   {
      cmd.ExecuteNonQuery();
   }
}

Удачи

0 голосов
/ 05 августа 2014

Мои извинения.Ответ, который я дал ранее, не будет работать, потому что имя переменной, используемой в команде вставки (в вашем случае @site_name), должно соответствовать переменным, используемым в вашей команде sqlcommand.Как в:

@site_name = textbox1.text
addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = textBox1.Text;

Извините за сумбур, который я мог вызвать.

0 голосов
/ 05 августа 2014

Попробуйте сохранить значение вашего текстового поля в переменной.Как в:

@stringname = textbox1.text
addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = @stringname;

(ВАЖНО! @ В @stringname не обязателен, но защищает вас от хакеров!)

Этот код творил чудеса для меня.

...