あなたが持っている問題は、あなただけのSQLに変数を連結し、SQLが実行されると、それが更新されることを期待することはできませんということです。
は、ExecuteScalarはおそらくあなたが望むものを達成するための最も簡単な方法です:
Dim sConnectionString As String _
= "User ID=XXX ;Password=XXX;Initial Catalog=gemXXX;Data Source=SCRBAMSDKBXXXXXX"
Dim sSQL as string = "SELECT TOP 1 e.import " _
"FROM tblrelcoms r " & _
" INNER JOIN [beant].[dbo].tblequipments e " & _
" ON r.IDEquipment = e.IDEquipment " & _
"ORDER BY e.Import;"
Using connection = new SqlConnection(sConnectionString)
Using command = New SqlCommand(sSQL, connection)
connection.Open()
TextBox1.Text = command.ExecuteScalar().ToString()
End Using
End Using
あなたが複数の列が必要な場合は、その後、あなたは、データリーダーを使用できますが:
Dim sConnectionString As String _
= "User ID=XXX ;Password=XXX;Initial Catalog=gemXXX;Data Source=SCRBAMSDKBXXXXXX"
Dim sSQL as string = "SELECT TOP 1 e.import " _
"FROM tblrelcoms r " & _
" INNER JOIN [beant].[dbo].tblequipments e " & _
" ON r.IDEquipment = e.IDEquipment " & _
"ORDER BY e.Import;"
Using connection = new SqlConnection(sConnectionString)
Using command = New SqlCommand(sSQL, connection)
connection.Open()
Using reader = command.ExecuteReader()
If reader.Read()
TextBox1.Text = reader.GetString(0)
End If
End Using
End Using
End Using
を私が作りました他にもいくつかの変更点があります。
IDisposable
オブジェクトを正しく廃棄するためのブロックが追加されました。
- 使用している構文が24年以上経過していることを示す名前として、ANSI 89の暗黙的な結合からANSIの92の明示的な結合にsql結合構文が更新されました。新しい構文の使用を開始する理由はたくさんあります。Bad habits to kick : using old-style JOINs
- SQLに
ORDER BY
句を追加しました。 TOP 1
(あなたが唯一のケースのトップ1が冗長であるレコードを、持っていない限り)あなたは不確定な結果が得られます順なく、より複雑なソリューションが動作しますれ、出力パラメータを使用することで、ラインでより多くを思わでしょうあなたはもともと達成しようとしたが、(私の意見では)このような状況のためにやり過ぎたものと:
Dim sConnectionString As String _
= "User ID=XXX ;Password=XXX;Initial Catalog=gemXXX;Data Source=SCRBAMSDKBXXXXXX"
Dim sSQL as string = "SELECT TOP 1 @Output = e.import " _
"FROM tblrelcoms r " & _
" INNER JOIN [beant].[dbo].tblequipments e " & _
" ON r.IDEquipment = e.IDEquipment " & _
"ORDER BY e.Import;"
Using connection = new SqlConnection(sConnectionString)
Using command = New SqlCommand(sSQL, connection)
connection.Open()
Dim p As SqlParameter = command.Parameters.Add("@Output", SqlDbType.VarChar, 255)
p.Direction = ParameterDirection.InputOutput
command.ExecuteNonQuery();
TextBox1.Text = p.Value.ToString()
End Using
End Using
*構文エラーを言い訳してください、私は年間でVB.Netを使用して、いくつかのC#の癖していませんパラメータのないメソッドに括弧を使用する必要がない場合、またはできない場合は覚えていないなど、以下のようになる可能性があります。うまくいけば、あなたが始めるのに十分な基本構造です。
あなたのvar 'sw'はあなたに値を与えません... –
オプション厳密を有効にします – Plutonix
ExecuteNonQueryはデータを返さないクエリを実行するために使用されます。 – Dejan