2012-05-16 5 views
1

C#에서 mysql에 대한 특정 쿼리를 작성하여 예를 들어 이름과 성으로 되돌릴 수 있습니다.C#에서 mysql 결과의 특정 데이터를 읽는 방법

C#에서이 문제를 어떻게 처리해야할지 모르겠으나 sqlinjection을 최소화하고 싶습니다. 내가 예를 들어 결과를 읽는하고 2 개 문자열 변수에, 단 하나 개의 결과 일 것이기 할 수 있도록하려면

con = new MySqlConnection("server=localhost;database=Customers;uid=root;pwd=******"); 
con.Open(); 
cmd = new MySqlCommand("SELECT name,lastname FROM customer WHERE ID_customer= ?Parname;", con); 
cmd.Parameters.Add("?Parname", MySqlDbType.Float).Value = customer_card; 
cmd.ExecuteNonQuery(); 
con.Close(); 

:

여기 내 코드입니다. 물마루를 가져 와서 저장하는 방법?

답변

0

부정 행위 그러나 다음과 같은 것이 하나 개의 행을 반환하는 쿼리에서 여러 문자열을 얻는 빠른 방법 :

con = new MySqlConnection("server=localhost;database=Customers;uid=root;pwd=******"); 
try { 
    con.Open(); 
    cmd = new MySqlCommand("SELECT concat(name,'|',lastname) FROM customer WHERE ID_customer= ?Parname;", con); 
    cmd.Parameters.Add("?Parname", MySqlDbType.Float).Value = customer_card; // Are you sure that the ID is float? That's the first time I see anything like that! 
    var tokens = ((String)cmd.ExecuteScalar()).Split('|'); 
    var firstName = tokens[0]; 
    var lastName = tokens[1]; 
    Console.Writeln("First={0}, Last={1}", firstName, lastName); 
} finally { 
    con.Close(); 
} 

아이디어는 MySQL의 측면에서 하나에 두 문자열을 결합하고, 다시 C# 측으로 나누십시오. 이 트릭을 통해 독자를 반복하거나 닫는 일을 피할 수 있습니다. 이름에 '|'자를 포함하지 않는다고 가정합니다.

+0

나는 코드를 시도 안녕하세요 나는이 오류 얻을 :'은이 줄에 object.'의 인스턴스로 설정되지 않았습니다 개체 참조 :.'VAR 토큰 = ((문자열) cmd.ExecuteScalar()) 스플릿 ('|');' –

+0

@denonth '고객'의 유형을 확인하십시오 (나는 주석에 대해 암시했습니다). 나는 그것이'float' 타입이라는 것을 진지하게 생각하지 않으므로,'MySqlDbType.Float'은 아마도 다른 것이 될 것입니다. – dasblinkenlight

+0

그 varchar 당신은 그것이 문제라고 생각합니까? –

2

당신은() 대신 cmd.ExecuteNonQuery를 사용하는 기록 물마루 반복하는 DataReader가 필요 감사; cmd.ExecuteReader()를 사용하십시오.

try 
    { 
    MySqlDataReader myReader = cmd.ExecuteReader(); 

    // Always call Read before accessing data. 
    while (myReader.Read()) 
    { 
     //This will get the value of the column "name" 
     Console.WriteLine(myReader.GetString(myReader.GetOrdinal("name"))); 
    } 

    // always call Close when done reading. 
    myReader.Close(); 

    // Close the connection when done with it. 
    } 
    finally 
    { 
    con.Close(); 
    } 
관련 문제