#c# #.net #ms-access
#c# #.net #ms-access
Вопрос:
У меня есть класс, который хранит несколько значений. В настоящее время я составляю список объектов, а затем использую их, но теперь мне нужно перейти на базу данных Access. Может ли кто-нибудь сказать мне, могу ли я поместить эти объекты в базу данных?
Ответ №1:
Возможно, вы сможете сериализовать свои объекты в XML, а затем записать их в Memo
поле (называемое Long Text
field в Access 2013). Следующий код работает для меня:
public class MyClass
{
public string Name { get; set; }
public List<string> FavoriteThings { get; set; }
}
class Program
{
static void Main(string[] args)
{
var myObject = new MyClass();
myObject.Name = "Gord";
var myFavs = new List<string>();
myFavs.Add("bicycles");
myFavs.Add("ham");
myObject.FavoriteThings = myFavs;
var xs = new System.Xml.Serialization.XmlSerializer(myObject.GetType());
var sw = new System.IO.StringWriter();
xs.Serialize(sw, myObject);
using (var con = new OleDbConnection())
{
con.ConnectionString =
@"Provider=Microsoft.ACE.OLEDB.12.0;"
@"Data Source=C:UsersPublicDatabase1.accdb;";
con.Open();
using (var cmd = new OleDbCommand())
{
cmd.Connection = con;
cmd.CommandText = "INSERT INTO tblObjects (ObjectID, ObjectXML) VALUES (?,?)";
cmd.Parameters.AddWithValue("?", 1);
cmd.Parameters.AddWithValue("?", sw.ToString());
cmd.ExecuteNonQuery();
}
con.Close();
}
}
}
Когда я открываю таблицу Access, выбираю поле Memo и нажимаю ShiftF2, чтобы «увеличить» его, я вижу