Rumah > Soal Jawab > teks badan
Saya menghadapi masalah dengan kod terakhir untuk projek sekolah saya. Saya perlu memilih berbilang nilai untuk ID yang diberikan daripada lajur "actuelewerktuigselectie". Nilai-nilai ini kemudiannya perlu dimasukkan ke dalam pembolehubah untuk kegunaan selanjutnya dalam projek.
Saya hanya mendapat nilai ID pertama. Lihat di bawah kod semasa saya. Apakah yang boleh saya ubah untuk membetulkan kod saya untuk mendapatkan semua nilai?
Dim sCnnStr As String = My.Settings.sCnnStr Dim oCnn As New MySqlConnection(sCnnStr) Dim sSql As String = "select pfProfielfreesnummer, pfLopendemeters from actuelewerktuigselectie where (awsId=@1 OR awsId=@2 OR awsId=@3 OR awsId=@4 OR awsId=@5 OR awsId=@6 OR awsId=@7 OR awsId=@8)" Dim oCmd As MySqlCommand = New MySqlCommand(sSql, oCnn) oCmd.Parameters.AddWithValue("@1", 5) oCmd.Parameters.AddWithValue("@2", 6) oCmd.Parameters.AddWithValue("@3", 7) oCmd.Parameters.AddWithValue("@4", 8) oCmd.Parameters.AddWithValue("@5", 17) oCmd.Parameters.AddWithValue("@6", 18) oCmd.Parameters.AddWithValue("@7", 19) oCmd.Parameters.AddWithValue("@8", 20) oCnn.Open() Dim myReader As MySqlDataReader myReader = oCmd.ExecuteReader() While (myReader.Read()) werktuignummer1 = (myReader.GetString(0)) LopendeMeters1 = (myReader.GetDouble(1)) werktuignummer2 = (myReader.GetString(2)) LopendeMeters2 = (myReader.GetDouble(3)) werktuignummer3 = (myReader.GetString(4)) LopendeMeters3 = (myReader.GetDouble(5)) werktuignummer4 = (myReader.GetString(6)) LopendeMeters4 = (myReader.GetDouble(7)) werktuignummer5 = (myReader.GetString(8)) LopendeMeters5 = (myReader.GetDouble(9)) werktuignummer6 = (myReader.GetString(10)) LopendeMeters6 = (myReader.GetDouble(11)) werktuignummer7 = (myReader.GetString(12)) LopendeMeters7 = (myReader.GetDouble(13)) werktuignummer8 = (myReader.GetString(14)) LopendeMeters8 = (myReader.GetDouble(15)) End While myReader.Close() oCnn.Close()
Semua kod ini saya ajar sendiri dalam beberapa bulan kerana saya tidak mendapat kursus yang saya perlukan untuk menyiapkan projek ini, tetapi saya hanya mengikutinya dan mempelajari asas vb.net dan MySql.
Lajur dan pembolehubah saya adalah dalam bahasa Belanda.
P粉4349968452024-03-31 15:56:23
Mungkin anda mempunyai bilangan keputusan yang tidak diketahui, mungkin sehingga 8 keputusan. Jadi lebih baik menggunakan sesuatu untuk menyimpan hasil, yang storannya boleh dikembangkan mengikut keperluan untuk menampung seberapa banyak hasil yang dikembalikan daripada pertanyaan: anda boleh menggunakan Senarai untuk ini, asalkan anda mencipta sesuatu yang boleh mengandungi segala-galanya Data dikembalikan untuk setiap baris dalam pertanyaan senarai - ini boleh menjadi kelas dengan sifat yang memegang setiap pembolehubah. Mungkin lebih mudah untuk melihat kod yang saya cadangkan daripada menerangkannya:
Public Class ToolDatum Public Property ToolID As String Public Property LopendeMeter As Double Public Sub New() ' Empty constructor End Sub Public Sub New(werktuignummer As String, LopendeMeter As Double) Me.ToolID = werktuignummer Me.LopendeMeter = LopendeMeter End Sub End Class Public Function GetData() As List(Of ToolDatum) Dim toolData As New List(Of ToolDatum) Dim connStr As String = My.Settings.sCnnStr Dim sql As String = "SELECT pfProfielfreesnummer, pfLopendemeters FROM actuelewerktuigselectie WHERE (awsId = @P1 OR awsId = @P2 OR awsId = @P3 OR awsId = @P4 OR awsId = @P5 OR awsId = @P6 OR awsId = @P7 OR awsId = @P8)" Using conn = New MySqlConnection(connStr), cmd = New MySqlCommand(sql, conn) cmd.Parameters.Add("@P1", MySqlDbType.Int32).Value = 5 cmd.Parameters.Add("@P2", MySqlDbType.Int32).Value = 6 cmd.Parameters.Add("@P3", MySqlDbType.Int32).Value = 7 cmd.Parameters.Add("@P4", MySqlDbType.Int32).Value = 8 cmd.Parameters.Add("@P5", MySqlDbType.Int32).Value = 17 cmd.Parameters.Add("@P6", MySqlDbType.Int32).Value = 18 cmd.Parameters.Add("@P7", MySqlDbType.Int32).Value = 19 cmd.Parameters.Add("@P8", MySqlDbType.Int32).Value = 20 conn.Open() Using myReader = cmd.ExecuteReader() While (myReader.Read()) toolData.Add(New ToolDatum(myReader.GetString(0), myReader.GetDouble(1))) End While End Using End Using Return toolData End Function
Fungsi GetData (anda harus memberikannya nama deskriptif) akan mengembalikan senarai yang boleh anda ulangi untuk mendapatkan setiap hasil individu, seperti
Dim q = GetData() For Each r In q Console.WriteLine(r.ToolID & " " & r.LopendeMeter) Next
Saya akan AddWithValue
更改为 Add
kerana yang pertama mungkin menyebabkan masalah yang tidak dijangka. Saya menukar nama parameter untuk bermula dengan huruf untuk mengelakkan masalah lain yang tidak dijangka.