2016-12-18 12 views
1

私のコードは間違っていますが、これは私が解決策に考えることができる最も近いものです。私は1つのテーブルから指定されたユーザーのすべてのポイントを追加し、その値を別のテーブルに挿入しようとしています。どんな助けもありがとうございます。1つのテーブルのSQL合計から取得した値を別のテーブルのvbに挿入するにはどうすればよいですか?

これは私のコードです:

Imports MySql.Data.MySqlClient 
Public Class Leaderboard 
Dim MysqlConn As MySqlConnection 
Dim COMMAND As MySqlCommand 
Private Sub submitBtn_Click(sender As Object, e As EventArgs) Handles submitBtn.Click 
    MysqlConn = New MySqlConnection 
    MysqlConn.ConnectionString = 
    "server=localhost;userid=root;password=root99;database=database" 
    Dim READER As MySqlDataReader 

    Try 
     MysqlConn.Open() 

     Dim Query As String 
     Query = " select (select SUM(Points) as sumpoints from database.progress where candidate_number_fk = '" & textbox_can.Text & "') (insert into database.leaderboard (username,points) values ('" & textbox_user.Text & "',' sumpoints ' )" 
     COMMAND = New MySqlCommand(Query, MysqlConn) 
     READER = Command.ExecuteReader 
     MessageBox.Show("You have successfully submitted your score") 

     MysqlConn.Close() 
    Catch ex As MySqlException 
     MessageBox.Show(ex.Message) 
    Finally 
     MysqlConn.Dispose() 
    End Try 
    My.Forms.Menu1.Show() 
    Me.Hide() 
End Sub 

End Class 

答えて

1

あなたがINSERT INTO .. SELECT FROM構文を使用することができるようあなたは二重のクエリーを必要としない、それはあなたがしていることに注意してください

insert into database.leaderboard (username,points) 
select 'Niam', SUM(Points) as sumpoints 
from database.progress 
where candidate_number_fk = '" & textbox_can.Text & "'; 

のような単一のクエリで成し遂げます文字列連結を使用してクエリで直接ユーザー入力を使用すると、SQLインジェクションにつながる可能性があります。 MySqlParameterクラスを使用する代わりに、パラメータ化されたクエリを使用します。

+0

これはうまくいきました – Niam

関連する問題