C # Обновление базы данных через цикл foreach. ОШИБКА - PullRequest
0 голосов
/ 30 октября 2018

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

Необходимо объявить переменную масштабирования @ ShortCompanyMessage

Вот мой код для нажатия кнопки. Есть что-то глупое, что я делаю или не делаю? LOL

string dataPath = "myPath";
        string dataFile = "myDataFile";
        string cfgFile;

        using (StreamReader sr = new StreamReader(dataPath + dataFile))
        {
            cfgFile = sr.ReadLine();
        }

        cfgFields = Regex.Split(cfgFile, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

        cfgFields[0] = cfgFields[0].Replace("\"", "");
        strDataSource = cfgFields[0];
        strDatabase = "Unity";
        //cfgFields[1];
        strLogin = cfgFields[2];
        strPassword = cfgFields[3];

        string connectionString = "Server=" + strDataSource + ";Database=" + strDatabase + ";User ID=" + strLogin + ";Password=" + strPassword + ";";
        SqlConnection sqlConnection = new SqlConnection(connectionString);
        sqlConnection.Open();

        foreach (var row in GridViewCompanies.Rows)
        {
            var compID = row.Cells[0].Value.ToString();
            var shortMessage = row.Cells[3].Value.ToString();         //get value of cells and update there and then? maybe?
            var compMessage = row.Cells[4].Value.ToString();
            SqlCommand update = new SqlCommand("UPDATE [Unity].[dbo].[Companies] SET shortMessage = @ShortCompanyMessage WHERE compID = @CompanyID", sqlConnection);
            update.ExecuteNonQuery();
            //SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(update);
        }

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 30 октября 2018

Вы не передали @ShortCompanyMessage и @CompanyID вашему запросу, поэтому передайте эти параметры, как показано ниже

foreach (var row in GridViewCompanies.Rows)
{
    var compID = row.Cells[0].Value.ToString();
    var shortMessage = row.Cells[3].Value.ToString();         //get value of cells and update there and then? maybe?
    var compMessage = row.Cells[4].Value.ToString();
    SqlCommand update = new SqlCommand("UPDATE [Unity].[dbo].[Companies] SET shortMessage = @ShortCompanyMessage WHERE compID = @CompanyID", sqlConnection);

    update.Parameters.AddWithValue("@ShortCompanyMessage", shortMessage);   <= Here i added parameter to your command
    update.Parameters.AddWithValue("@CompanyID", compID);                   <= Here i added parameter to your command

    update.ExecuteNonQuery();
    //SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(update);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...