2012-01-25 5 views
1

저는 C#에서 sqlite 데이터베이스 (ADO, System.Data.SQLite)를 사용하는 프로그램을 작성하고 있습니다.올바른 문자 집합으로 sqlite 데이터베이스에서 데이터를 삽입하고 검색하는 방법은 무엇입니까?

문제는 내가 스웨덴어 또는 독일어 문자 (åäöüÅÅÖÖÜ 등)가 포함 된 C# 응용 프로그램에서 문자열을 삽입 할 때 DB에 잘못 저장된다는 것입니다. (¶ 및 ¤ 같은 요법을 찾고),하지만 만약 내가 DB에 직접 SQLite는 관리자가 올바르게 저장되어 그들을 사용하여 삽입합니다. 내가 제대로,이 같은 방법으로 엉망 저장 내 C# 응용 프로그램과 데이터 ...

를 검색 할 때

는 또한, 내가 잘못 뭐하는 거지?

코드는 데이터를 저장하기 :

SQLiteConnection cnn = new SQLiteConnection("Data Source=C:\temp\database.s3db"); 
cnn.Open(); 
SQLiteCommand mycommand = new SQLiteCommand(cnn); 
mycommand.CommandText = "INSERT INTO images (image_name, tags, relevance) VALUES (\"Example Image åäö.jpg\", \"test\", 3)"; 
mycommand.ExecuteNonQuery(); 
cnn.Close(); 
cnn.Dispose(); 
+0

당신은 일종의 인코딩을하지 않아도됩니다. 또는 문화 유형 체크/인코딩 ..? – MethodMan

+0

DJ KRAZE에게 고마워요. – Daggepagge

+0

이 링크를 사용해보십시오. 맨 밑에 SQLLite 설치에 대한 답변이 있습니다. http://stackoverflow.com/questions/498670/encoding-problem-using-sqlite-and-winforms -2-0-c-sharp – MethodMan

답변

1

이 시도 :

private IDbDataParameter AddParameter(IDbCommand command, string paramName, DbType type, object value) 
{ 
    IDbDataParameter parameter = command.CreateParameter(); 
    parameter.ParameterName = paramName; 
    parameter.DbType = type; 
    if (value != null) 
     parameter.Value = value; 
    else 
     parameter.Value = DBNull.Value; 
    command.Parameters.Add(parameter); 
    return parameter; 
} 

mycommand.CommandText = "INSERT INTO images (image_name, tags, relevance) VALUES (@image_name, @tags, @relevance)"; 
AddParameter(mycommand, "@image_name", DbType.String, "Example Image åäö.jpg"); 
AddParameter(mycommand, "@tags", DbType.String, "Test"); 
AddParameter(mycommand, "@relevance", DbType.Int32, 3); 
mycommand.ExecuteNonQuery(); 

는 DbType.AnsiString를 사용하지 마십시오 또는 당신이 지금 데있어 당신은 동일한 문제가 발생합니다.

관련 문제