私はVB.NETをかなり新しくしていますので、バグに遭遇したときに多く研究します。問題は、私はこれに対する解決法、またはそれを遠隔的に扱う何かを見つけることができないということです。@(アットマーク)変数をMySQLに渡す
リモートのmysqlサーバに接続し、クエリを実行し、データセットを返すソフトウェアを開発しています。私は、mysqlプロンプトを介してサーバーに対してこのクエリを実行し、結果を正常に受信しました。しかし、私は私のアプリからこのクエリを実行しようとすると、私はオブジェクト参照エラーが発生します。
私は、SQL文字列の変数に使用されている@文字が私のコードで問題を引き起こしていることがわかりましたが、ビジュアルスタジオエラーをスローすることなくサーバーにこのクエリを渡す方法が見つかりません。私が見つけた変数の使用に対するすべての答えは、具体的には私のコードで変数値を規定していることを示唆しています。ここで
は私のコードと私の質問のビットです:Dim mysqlCon As MySqlConnection = New MySqlConnection("Server=" & arrArgs & ";Database=DBNAME;Uid=USER;Pwd=PASS;allow zero datetime=true;")
Dim mysqlString As String = "set @from_scanner = '" & code & "'; set @code='', @altbarcode='', @qty='1', @price='',@Altprice='0', @date_start='',@date_end='',@disc_price='0',@description='', @altdescription=''; set @from_scanner=if(left(@from_scanner,2)='FF',trim(substring(@from_Scanner,3,13)),trim(substring(@from_Scanner,2,13))); select code, altbarcode,description, qty, price into @code, @altbarcode,@altdescription, @qty, @Altprice from altbar where [email protected]_scanner; set @code=if(@code='',@from_Scanner,@code); select disc_price, date_end into @disc_price, @date_end from plu where (code=trim(left(@code,12)) or [email protected]) and current_date between date_start and date_end and disc_price<>price and disc_price<>0; select price, description into @price, @description from plu where code=trim(left(@code,12)) or [email protected]; set @price=if(ifnull(@disc_price,0)=0 or @disc_price='', @price,@disc_price); set @price=if(@qty>1 and @Altprice > 0, @Altprice, @price*@qty); set @description=if(@altdescription<>'', @Altdescription, @description); select @code, format(@price,2) Price, @description,@date_end;"
Dim mysqlCom As MySqlCommand = New MySqlCommand(mysqlstring, mysqlCon)
Dim mysqlAdapter As New MySqlDataAdapter
Dim mysqlData As New DataSet
mysqlCon.Open()
mysqlAdapter.SelectCommand = mysqlCom
mysqlAdapter.Fill(mysqlData, "tblDBData")
だから私は本当に知っておくべきことをVBで問題を引き起こすことなくMySQLのサーバーにこのクエリを渡す方法です。
クイックレスポンスを気に入ってください。 – user1041310
私の問題は、私がサーバに渡す唯一の情報はスキャナからのアイテムコードであり、これをVB変数 "code"を通して送るということです。 クエリに対してmysql変数を作成しました。これは、クエリ自体がすべての作業を行い、データベースに対してクエリを実行している間にmysql変数を割り当て/再割り当てするためです。このようにして、mysqlサーバはすべての作業を行い、ただ一つのレコードをVBにデータセットとして提供します。 私はVBで変数の値を設定したくありません。私はmysqlに変数コンテナを渡し、クエリに値を入力させたいと思います。 – user1041310
私はあなたが今何を意味するかを見ます。残念ながら、私はあなたが立ち往生していると思います。その場合、SQL変数をコード内のqueryString内のクエリで実際に置き換えなければならないことは確かです。申し訳ありませんが私はより多くの助けではなかった:( – Jay