2012-01-25 13 views
1

私はC#でsqliteデータベース(ADO、System.Data.SQLite)を使っているプログラムを書いています。正しい文字セットを使用してsqliteデータベースからデータを挿入および取得する方法は?

問題は、スウェーデン語またはドイツ語の文字(åäöüÅÅÄÖÜなど)を含むC#アプリから文字列を挿入すると、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を使用しないでくださいまたはあなたが今持っているとあなたは同じ問題が発生します。

関連する問題