2012-07-31 4 views
-2

저는 ASP.NET C#에서 만든 Webform을 MySql 데이터베이스와 함께 가지고 있습니다. 데이터베이스에는 id, auto increment 및 INT 유형의 필드가 있습니다.MySql 선택을 문자열로 변환하는 방법은 무엇입니까?

특정 레코드 (예 : 숫자 10)를 선택하여 문자열로 변환하여 다른 문자열과 비교할 수 있습니다.

편집, 전체 코드 :

public partial class index : System.Web.UI.Page 
{ 
    // ConnString 

    String SqlConnString; 
    String qs; 

    private MySqlCommand SqlCommand; 
    private MySqlConnection dbConnection; 

    protected void btnSubmit_Click(object sender, ImageClickEventArgs e) 
    { 
     if (Page.IsValid) 
     { 
      // Variabele 

      string textbox = tbTextbox.Text; 


      // DbConnection 
      SqlConnString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString.ToString(); 

      SqlCommand = new MySqlCommand(); 
      dbConnection = new MySqlConnection(); 
      dbConnection.ConnectionString = SqlConnString; 

      // qs 
      qs = "INSERT INTO applys" + 

       "(textbox, date)" + 

       " VALUES (@textbox, NOW())"; 

      // Parameters 
      SqlCommand.Parameters.Clear(); 
      SqlCommand.Parameters.AddWithValue("@textbox", date); 

      //open database 
      dbConnection.Open(); 
      SqlCommand.CommandText = qs; 
      SqlCommand.Connection = dbConnection; 

      SqlCommand.ExecuteNonQuery(); 

      SqlCommand.Dispose(); 

      dbConnection.Dispose(); 

      /////////// 

      MySqlDataReader reader = null; 
      MySqlConnection con = null; 
      MySqlCommand cmd = null; 
      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
      string ConnectionString = "connection string"; 
      con = new MySqlConnection(ConnectionString); 
      string query = "SELECT id FROM apply WHERE id = 10"; 
      cmd = new MySqlCommand(query); 
      cmd.Connection = con; 

      try 
      { 
       // Open Connection 
       con.Open(); 

       // Execute the query 
       reader = cmd.ExecuteReader(); 

       bool found = false; 
       while (reader.Read()) 
       { 
        if (reader["id"].ToString() == "10") 
        { 
         found = true; 
         break; 
        } 
       } 
       if (found) 
       { 
        ltl.Text = "Worked!"; 
        //Response.Redirect("different page"); 
       } 
       else 

        ltl.Text = "Nope"; 
        //Response.Write("Nothing!"); 

      } 
      catch 
      {     
       // MessageBox.Show("Error!"); 
      } 

      int id = -1; 
      id = (Int32)cmd.ExecuteScalar(); 
      if (id != -1) 

       ltl.Text = "Worked!"; 
       //Response.Redirect("different page"); 

      reader.Dispose(); 
      reader.Close(); 
      con.Dispose(); 
      con.Close(); 
      cmd.Connection.Close(); 
      cmd.Dispose(); 


     } 
    } 
} 
+4

당신이 실제로 쿼리를 실행, 아니면 그냥 변수로 약간의 SQL 텍스트를 채우고 있습니까? –

+0

예, 쿼리가 실행 중입니다. 양식의 목표는 사용자가 예를 들어 id 필드에서 숫자 10 인 경우, if else를 사용하여 다른 페이지로 리디렉션하는 것입니다. 문자열을 비교하는 것이 최상의 방법이 아니라는 것을 알고 있습니다 ... – Yuri

+0

이 코드를 게시하면 도움이 될 것입니다. – joar

답변

0
var query = "SELECT id FROM applys WHERE id = 10"; 
var connectionString = "yourmysqlconnectionstringgoeshere"; 
using(var connection=new MySqlConnection(connectionString)) 
{ 
    connection.Open(); 
    using (var reader = new MySqlCommand(query, connection).ExecuteReader()) 
    { 
     if(reader.Read()) 
     { 
      if (reader["id"].ToString() =="10") 
      { 
       // do your stuff here 
      } 
     } 
    } 
} 
0

당신은이 일을해야한다 신중하게 단계 :

SqlDataReader rdr = null; 
SqlConnection con = null; 
SqlCommand cmd = null; 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
string ConnectionString = "server=.;uid=sa; pwd=123; database=MyDB"; 
con = new SqlConnection(ConnectionString); 
string query = "SELECT id FROM applys WHERE id = 10"; 
cmd = new SqlCommand(query); 
cmd.Connection = con; 

try 
{ 
    // Open Connection 
    con.Open(); 

    // Execute the query 
    reader = cmd.ExecuteReader(); 

    bool found=false; 
    while(reader.Read()) 
    { 
     if (reader["UserName"].ToString()=="Ram") 
     { 
      found=true; 
      break; 
     } 
    } 
    if (found) 
    { 
     Response.Redirect("different page"); 
    } 

    else 
     Response.Write("Nothing!"); 
} 
catch{ 
    MessageBox.Show("Error!"); 
} 

은 또한 귀하의 경우는 ExecuteScalar()를 사용할 수 있습니다. 그것은 SELECT 문에서 첫 번째 행, 첫 번째 열에서 단일 값을 반환합니다

int id=-1; 
id=(Int32)cmd.ExecuteScalar(); 
if (id!=-1) 
    Response.Redirect("different page"); 
+0

Thx. 나는 mysql 데이터베이스이기 때문에 Sql 클래스를 MySql 클래스로 대체했다. 이미 열려있는 DataReader 오류가 발생합니다. 그러나 나는 try catch 후에 모든 연결을 닫고 처리했습니다. 그들은 동일한 이벤트 처리기에 있지만 중요하지 않아야합니까? – Yuri

관련 문제