Имею базу sqlite , к ней в методе делаю запрос, и не могу сообразить как мне правильно вернуть строку с разделителем.
public string GetImportedFileList(string connstring, string idrecord,string tablename,string Idname)
{
string ImportedFiles = null;
using (SQLiteConnection connect = new SQLiteConnection(connstring))
{
connect.Open();
using (SQLiteCommand fmd = connect.CreateCommand())
{
var sb= new StringBuilder();
var que = sb.Append("SELECT * FROM "+tablename+" where "+Idname+"="+idrecord);
fmd.CommandText = que.ToString();
fmd.CommandType = CommandType.Text;
SQLiteDataReader r = fmd.ExecuteReader();
while (r.Read())
{
object[] values = new object[] { };
r.GetValues(values);
ImportedFiles= String.Join(",", values).ToString();
}
}
}
return ImportedFiles;
}
На вход метода подаю строку подключения, имя таблицы, имя нужного мне поля, и значение этого поля. И на выходе хочется увидеть результат запроса в виде строки с разделителем.
Строка всегда будет одна, так как id уникален в базе. Хочу получить в строке значения всех столбцов через запятую или другой разделитель.
Можно получить значения всех столбцов через GetValues
и соединить их через String.Join
:
...
while (r.Read())
{
object[] values = new object[r.FieldCount];
r.GetValues(values);
return String.Join(",", values);
}
...
Все значения будут считаны как object
и преобразованы в строку через ToString()
по-умолчанию. Если потребуется выводить в каком-то особенном строковом представлении, то придется выбирать значения циклом по одному через GetValue
.
Советую добавить проверку на то, что запрос вернул ровно одну строку, во избежание недоразумений.
Еще, обычно при составлении запросов через конкатенацию строк советуют изучить работу с параметризованными запросами, чтобы избежать SQL-инъекции. Но в данном случае запрос имеет динамическую структуру и параметризовать получится только разве что idrecord
. В любом случае подумайте о безопасности если какой-то аргументов метода приходит извне.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Помогите разобратьсяПишу программу на С# в которой от Form1 наследуется Form2 и Form3
Выдаёт такую ошибку, что делать
Разбираюсь в c# в частности с делегатами, возник вопрос зачем нужны делегаты если можно создать экземпляр класса и вызвать метод