Nano Hash - криптовалюты, майнинг, программирование

Вставка новой строки данных в С# Windows Form с использованием SQL Server

Благодаря Нейту М. Я запустил это, используя вторую часть кода и немного поучившись работе с SQL Server (это мой первый день). Так что проблема решена. Спасибо всем за помощь.

Я не могу понять это. Я использую Visual Studio 2015, SQL Server 2014, это работает, но я не могу понять, как вставлять данные одним нажатием кнопки. Я пробовал что-то в MSDN, ничего не работает, у них около 100 разных способов. Я запутался. Вот что у меня есть.

private void btnTheWorst_Click(object sender, EventArgs e)
{
    lblMood.Text = "The Worst :(";
    lblMood.ForeColor = System.Drawing.Color.Navy;

    SqlConnection cmood = new SqlConnection("my connection string"); {

    cmood.Rows.Add(new Object[] { 1, "Smith" });
}

Вот где я получаю ошибку.

SqlConnection не содержит определения для «Rows», и не удалось найти метод расширения «Rows», принимающий первый аргумент типа «SqlConnection».

09.03.2016

  • Вы действительно захотите начать с вводного руководства по ADO.NET. Взаимодействие с базой данных описано во множестве учебных пособий, и в Интернете есть бесчисленное количество примеров. Как указано в ошибке, объект SqlConnection не имеет свойства с именем Rows. Никогда не было. 09.03.2016
  • Возможный дубликат Вставка значений в база данных SQL Server с использованием ado.net через C# 09.03.2016
  • Я использовал код с веб-сайта MSDN... но ни один из их методов не сработал. 10.03.2016
  • Я использую Visual Studio 2015, SQL Server 2014, все работает... спасибо, БОГ! Если бы это не сработало, у всех нас были бы проблемы. надеюсь ты прочтешь и посмеешься 10.03.2016
  • Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он основан не на проблеме, а на отсутствии исследований. Быстрая вставка строк Google sql server С# ответит на это 10.03.2016

Ответы:


1

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

using(var conn = new SqlConnection(<connection string here>))
{
    try
    {
        conn.Open();
        string sql = "<sql query here>";
        using(var cmd = new SqlCommand(sql,conn))
        {
            using(var reader = cmd.ExecuteReader())
            {
                if(reader.HasRows)
                {
                    while(reader.Read())
                    {
                        //Here is where you get your data..
                        int imReadingAnInt = (int)reader["myIntColumnHeader"];
                        string imReadingAString = reader["myStringColumnHeader"].ToString();
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
        string err = ex.Message;
    }
}

На вставках:

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

using(var conn = new SqlConnection(<connection string here>))
{
    try
    {
        conn.Open();
        string sql = "insert into [table_name] values (@column1Value,@column2Value,...);";
        using(var cmd = new SqlCommand(sql,conn))
        {
            cmd.Parameters.AddWithValue("@column1Value",1);//Presuming column 1 is an int
            cmd.Parameters.AddWithValue("@column2Value","Smith"); //Presuming column 2 is a varchar (string)
            cmd.ExecuteNonQuery();
        }
    }
    catch (Exception ex)
    {
        string err = ex.Message;
    }
}

Обратите внимание, что приведенный выше код использует параметризацию (sp) для предотвращения внедрения SQL. Вы можете жестко закодировать значения в строке SQL-запроса, но это не считается передовой практикой с точки зрения безопасности.

Вставка SQL для школ W3

Мой мозг продолжает работать над этим... Просто заметка об основных понятиях. С Objects SqlConnection, SqlCommand и т. д. вы фактически не устанавливаете прямой доступ к базе данных (т. е. вы не можете просто взять строку и отредактировать ее вручную). Вместо этого вы устанавливаете соединение, через которое вы можете выполнять SQL-запросы, которые представляют собой хорошо структурированный метод чтения и редактирования базы данных. Конечно, существует масса информации о том, как создавать указанные запросы, поэтому, как только вы поймете назначение рассматриваемых объектов C#, доступ к базе данных и ее изменение приобретут гораздо больше смысла.

09.03.2016
  • Спасибо, второе исправление помогло. Я играл с Insert INTO, но облажался. Это работает. 10.03.2016
  • Рад слышать, что вы решили проблему. 10.03.2016
  • Ну, это не вставка в БД.. Игра с этим. Глядя на файл .xsd, он не обновляется, но ошибок не возникает. 10.03.2016
  • хм... ну, вставка данных может быть заблокированной привилегией, в зависимости от того, как настроена ваша база данных. Я бы проверил вашу строку подключения и убедился, что у вашего пользователя есть соответствующие разрешения для вставки данных в базу данных, с которой вы работаете. Кроме того, убедитесь, что имя вашей таблицы указано правильно, и что при заполнении каждого столбца (области в скобках) вы полностью заполняете данные. Под этим я подразумеваю, что если у вас есть таблица с 5 столбцами, вы предоставляете 5 значений соответствующего типа. Наконец, поставьте точку останова в операторе catch и посмотрите, сработает ли он во время отладки. 10.03.2016
  • Спасибо. Сейчас я внимательно проверю свои настройки SQL Server. 10.03.2016
  • Я хочу сказать, проверьте папку безопасности> логины> любое имя пользователя, которое вы используете для входа в систему, щелкните правой кнопкой мыши, выберите свойства, затем посмотрите сопоставление пользователей. У пользователя должен быть флажок рядом с БД, которую вы хотите изменить. Когда вы щелкаете левой кнопкой мыши по соответствующей БД, в нижней панели должны быть роли, которые разрешают чтение/запись. Я не слишком много сделал с этим, так что ... может быть, есть какие-то другие места, но я думаю, что это ключевые разрешения. Я бы определенно убедился, что код также не попал в ловушку. Много раз у вас может быть ошибка в вашем операторе sql, и он вызовет исключение 10.03.2016
  • Это может стать сложным. Я установил MS SQL Server 2014 с сайта MS. Я не уверен, что это за версия, и я не могу понять это. SQLEXPRESS работает. База данных находится в папке Visual Studio, на которую я дал разрешения. Я не получаю исключение, когда запускаю его. 10.03.2016
  • Я просто в замешательстве. Вот моя строка подключения и вставка. используя (var conn = new SqlConnection (источник данных = SANDORFALOT\\SQLEXPRESS; начальный каталог = msdb; встроенная безопасность = True)) вставить в CrazyMoods VALUES (1, 1); 10.03.2016
  • Давайте продолжим обсуждение в чате. 10.03.2016

  • 2

    Проверьте это, которое дает хорошие знания о том, как вставлять данные в базу данных. Вы можете проверить раздел Вставка новых записей с помощью командных объектов https://msdn.microsoft.com/en-us/library/ms233812.aspx

    09.03.2016
  • Я пробовал это несколько раз, и мне не повезло. Спасибо хоть. 10.03.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..