C# Sqlite без обновлений - PullRequest
0 голосов
/ 30 апреля 2020

Класс Dashboard1 этот код проверяет все оцененные работы и суммирует общую сумму ставок и используется в запросе на обновление для обновления пользователя, выполнившего работу

        {
            // rate
            if (listView1.SelectedItems.Count > 0)
            {
                if (comboBox1.Text == "")
                {
                    MessageBox.Show("Warning : Select Rate value");
                }
                else
                {                   
                    Author au = new Author();
                    au.rateReview(Convert.ToInt32(comboBox1.Text), Convert.ToInt32(listView1.SelectedItems[0].SubItems[0].Text));
                    List<int> score = new List<int>();
                    string sql = "select work.rate from work WHERE work.id ="+ listView1.SelectedItems[0].SubItems[0].Text+";";
                    SQLiteConnection conn = new SQLiteConnection("data source =DatabaseFile.db3");
                    SQLiteCommand cmd = new SQLiteCommand(conn);
                    conn.Open();
                    cmd.CommandText = sql;
                    SQLiteDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {     
                        score.Add(Convert.ToInt32(reader["rate"].ToString()));
                    }
                    conn.Close();
                    res = score.AsQueryable().Sum();
                   // MessageBox.Show(res.ToString());
                    au_update_assigned();
                   string sql1 = "Update user Set score = "+res+" where id =" + userid + ";";
                    Database db = new Database();

                    db.insert(sql1);

                    MessageBox.Show(sql1);

                }
            }
            else
            {
                MessageBox.Show("Error : Select Work from List");
            }

        }

Класс базы данных

Функция вставки вызывается из класса базы данных


 public void insert(string query)
        {
            conn.Open();
            SQLiteCommand cmd = new SQLiteCommand(conn);
            cmd.CommandText = query;
            cmd.ExecuteNonQuery();
        } ```

The button even is from a **dashboard1 class** when the insert function is from the **database class** I am using sqlite  I have checked for syntax error exception error  but I just won't seem to up to update. It first queries for all user rated work then creates a sum total which is supposed to be part of the update command  all fields have been filled 

1 Ответ

0 голосов
/ 30 апреля 2020

вам нужно открыть соединение и запятую для выполнения инструкции SQL, попробуйте изменить:

Database db = new Database();
db.insert(sql1);
MessageBox.Show(sql1);

на:

conn.Open();
SQLiteCommand cmd2 = new SQLiteCommand(conn);
cmd2.CommandText="Update user Set score = "+res+" where id =" + userid + ";";
cmd2.ExecuteNonQuery ( );
conn.Close();

или передать соединение для вставки функции:

 public void insert(string query, SQLiteConnection _conn )
    {
        _conn.Open();
        SQLiteCommand cmd = new SQLiteCommand(_conn);
        cmd.CommandText = query;
        cmd.ExecuteNonQuery();
        _conn.Close();
    } 

и звоните:

db.insert(sql1, cnn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...