2017-02-07 13 views
0

私はテーブルを持っているので、私はテーブルから値を選択し、C#の変数に格納したい。どのようにmysqlの値を選択し、変数に格納するC#

私が今持っていることは、私はすでにそれを選択している知っているが、私はC#でIPアドレスどのように操作しないので、この

String connString = System.Configuration.ConfigurationManager.ConnectionStrings["WebAppConnString"].ToString(); 
conn = new MySql.Data.MySqlClient.MySqlConnection(connString); 
try 
{ 
    conn.Open(); 
    queryStr = ""; 
    queryStr = "SELECT ipaddress from robolinks where roboID=?roboID"; 

    cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, conn); 
    cmd.Parameters.AddWithValue("?roboID", roboID); 
    cmd.ExecuteReader(); 
    conn.Close(); 

//after closing the connection, get the ipaddress and key it into web browser. 

} 
catch(Exception) 
{ 

} 

のですか?

ありがとうございました!参考のために

+0

このクエリを実行するために使用しているコードを共有してください。 –

+0

'ipaddress'を操作するとどういう意味ですか?あなたはそれをデータベースで更新するか、それとも正確に何かを意味するのですか? –

+0

選択したIPアドレスを変数に格納して、プログラムでWebブラウザを開き、IPアドレスを入力することができます。 – Marvinatorrr

答えて

0

まず、ExecuteReaderを使用する場合、最初に値を取得してから接続を閉じる必要があります。


セカンドが ExecuteReaderでは、コーディングを開始あなたがSQLから何らかの値を取得したい場合は、手動( https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx)を使用して、いくつかの値が今

SqlDataReader dr = cmd.ExecuteReader(); 

ExecuteReaderの戻り変数を割り当てる必要がありそうSqlDataReaderを返しますあなたは一つの値だけを選択した場合

string roboIp; 
// Because you know that id is int so imho you don't need parameters. 
queryStr = "SELECT ipaddress from robolinks where roboID="+roboID+";"; 
// This is right. 
cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, conn); 
conn.Open(); 
var dr = cmd.ExecuteReader(); 
// Now check if any rows returned. 
if (dr.HasRows) 
{ 
    dr.Read();// Get first record. 
    roboIp = dr.GetString(0);// Get value of first column as string. 
} 
dr.Close();// Close reader. 
conn.Close();// Close connection. 

しかし、その後、より良いの代わりにExecuteScalarを使用ExecuteReader

string roboIp; 
queryStr = "SELECT ipaddress from robolinks where roboID="+roboID+";"; 
cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, conn); 
conn.Open(); 
var queryResult = cmd.ExecuteScalar();//Return an object so first check for null 
if(queryResult!=null) 
    // If we have result, then convert it from object to string. 
    roboIp = Convert.ToString(queryResult); 
else 
    // Else make id = "" so you can later check it. 
    roboIp = ""; 
+0

更新。私はIPが文字列として格納されていると考えて編集しました。 – Sergio

0
Using connection As New MySqlConnection(connectionstring) 
     SQL = "Select * from IPQC_modelParameter where full_model='" & lblModel.Text & "' and drawing_no='" & lblDrwing.Text & "' and machine_name='" & cbmachnum.Text & "' and parameter='" & tempparam & "' " 
     Using da As New MySqlDataAdapter(SQL, connection) 
      Dim ds As New DataSet 
      da.Fill(ds) 
      txtucl.Text = ds.Tables(0).Rows(0)("ucl").ToString 

     End Using 
    End Using 

:イムvbnetを使用して、あなたはちょうどあなたが単一の値のみを期待している場合は、最も簡単にはあなたの単一のオブジェクトを返すExecuteScalar()を用いることであろうC#の構文

+0

@Sergioに投票してくれてありがとうございました。私は自分の答えを削除する必要がありますか? –

+0

いいえ)誰かが役に立った;) – Sergio

+0

@Sergio、aight thanks! –

0

に変換することができます直接キャプチャすることができます。

それ以外の場合は、使用しているExecuteReader()メソッドが実際にループバックできるDataReaderを返します(リンクされたドキュメントの例を参照)。

関連する問題