2014-01-15 2 views
0

SQL 데이터베이스에서 결과를 가져 와서 변수로 유지하려고합니다. 하지만 내 코드 (아래 참조)는 0을 반환합니다. 내가 뭘 잘못하고 있는지 생각해?VB.Net 응용 프로그램 (Win32)에서 SQLite SELECT

감사

Function getName(name As String) 
    Dim SQLconnect As New SQLite.SQLiteConnection() 
    Dim SQLcommand As SQLite.SQLiteCommand 

    SQLconnect.ConnectionString = "Data Source=C:\tools\names.sqlite;" 
    SQLconnect.Open() 

    SQLcommand = SQLconnect.CreateCommand 

    SQLcommand.CommandText = "SELECT * FROM names WHERE name = " & name & " LIMIT 1;" 
    Dim sqlResponse As String = SQLcommand.ExecuteNonQuery() 


End Function 

편집 : 반환 "sqlResponse를 돌려"

답변

1

우선 사용하고,은 SQL이 있어야한다 (내 생각) :

SQLcommand.CommandText = "SELECT * FROM names WHERE name = '" & name & "' LIMIT 1;" 

나는 확실하지 않다 SQLite에서 텍스트를 나타내는 방법은 있지만 SQL Server에서 작은 따옴표와 같은 구분 기호가 필요합니다.

두 번째 것은, SQL 주입

세 번째에 의해 납치되는 자신을 중지 paramterized 쿼리를 사용하는 SELECT는가 ExecuteReader를 사용하고, 당신이 하나 개의 항목 만 할 경우에, ExecuteScalar는 시도. ExecuteNonQuery는 삽입, 업데이트 삭제를위한 것입니다.

+0

그것은 ExecuteScalar 함께 작동! 많은 많은 감사합니다! 이것은 정답입니다! –

1

실행 NonQuery은 값을 반환하지 않으므로 항상 0이됩니다. 당신은 사용해야합니다

Dim sqlResponse As String = SQLcommand.ExecuteScalar()