Вы, кажется, смешиваете SQL, vb.net и c # в этой строке:
EnglishMeningRTB.Text = dr.GetString('phonetic') & Environment.NewLine &
dr.GetString('grammar') & Environment.NewLine & dr.GetString('meaning') &
Environment.NewLine & dr.GetString('sentece') }
, и я удивлен вашим утверждением, что вы "получаете только первый символ", потому что это не должнодаже компилировать.Я ожидаю, что строка, которая задает ваш текст, будет выглядеть примерно так:
EnglishMeningRTB.Text = $"{dr.GetString(dr.GetOrdinal("phonetic"))}\r\n {dr.GetString(dr.GetOrdinal("grammar"))}\r\n{dr.GetString(dr.GetOrdinal("meaning"))\r\n{dr.GetString(dr.GetOrdinal("sentece"))}";
Или это, если вы находитесь на pre c # 6:
EnglishMeningRTB.Text = string.Format(
"{0}\r\n{1}\r\n{2}\r\n{3}",
dr.GetString(dr.GetOrdinal("phonetic")),
dr.GetString(dr.GetOrdinal("grammar")),
dr.GetString(dr.GetOrdinal("meaning")),
dr.GetString(dr.GetOrdinal("sentence"))
);
Я никогда не зналdatareader.GetString()
принять строковое имя столбца;afaik это порядковый номер столбца целого числа, который нужно искать, используя GetOrdinal()
Если вы хотите отформатировать текст так, чтобы определение было выделено жирным шрифтом, грамматика курсивом и т. д., вам нужно отформатировать RTFтекст и установите свойство .Rtf вместо свойства .Text
В соответствии с моим комментарием выше, а также в дополнение к тому факту, что написание кода доступа к базе данных таким образом безобразно, как грех, я рекомендую вам хотя бы посмотретьв Dapper, если не EF.С Dapper ваш код может выглядеть так:
//make a strongly typed class to represent your dictionary entry
public class Definition{
public string Phonetic {get; set;}
public string Grammar {get; set;}
public string Meaning {get; set;}
public string Sentence {get; set;}
public override ToString(){
return $"{Phonetic}\r\n{Grammar}\r\n{Meaning}\r\n{Sentence}";
}
}
//in your windows form, something like this gets your db entry, converts it to an instance of the Definiton class, disposes the connection etc:
using (var db = DapperConnectionFactory())
{
var wordDef = db.QueryFirstOrDefault<Definition>("SELECT phonetic,grammar,meaning,sentence FROM dictionaryTable WHERE word LIKE @word", _wahkiWordRtb.Trim());
EnglishMeningRTB.Text = wordDef?.ToString() ?? "Word not found";
}
Более приятный, безопасный, легкий для чтения и записи, более удобный для обслуживания, более быстрый ...
https://dapper учебник.сеть /