DevExpress XPO笔记3:数据库连接对象Session
通常应用程序需要访问数据库对象,需要指定连接属性,比如数据库名、用户名、密码等,在XPO中可以利用Session对象实现数据库的连接,它用于管理数据库的连接信息,Session的创建可以利用设计时和运行时创建。
一、Session的设计时创建:利用控件
1、可以拖拽Session控件到应用程序中,在属性窗口中,AutoCreateOption默认是DatabaseAnSchema,共有4种不同方式:
- DatabaseAnSchema:自动创建表,自动更新数据架构
- SchemaOnly:只更新数据架构
- None:不创建数据表,也不更新数据架构
- SchemaAlreadyExists:不检测数据库架构
2、设置ConnectionString连接字符串
下列是常用到的连接字符串格式,大家可以复制使用。
- AccessConnectionProvider: MSAccess
XpoProvider=MSAccess;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=; - DataSetDataStore: XmlDataSet
XpoProvider=XmlDataSet;Data Source=C:\mydatabase.xml;Read Only=false - InMemoryDataStore: InMemoryDataStore
XpoProvider=InMemoryDataStore;Data Source=C:\mydatabase.xml;Read Only=false - MSSqlConnectionProvider: MSSqlServer
XpoProvider=MSSqlServer;Data Source=(local);User ID=username;Password=password;Initial Catalog=database;Persist Security Info=true - AdvantageConnectionProvider: Advantage
XpoProvider=Advantage;Data Source=\myserver\myvolume\mypat\mydd.add;ServerType=local;User ID=ASSSYS;TrimTrailingSpaces=true - AsaConnectionProvider: Asa
XpoProvider=Asa;Uid=MyUsername;PWD=MyPassword;DBF=c:\mydatabase.db;Persist Security Info=true - AseConnectionProvider: Ase
XpoProvider=Ase;Port=5000;Data Source=MyAseServer;User ID=MyUserName;Password=MyPassword;Initial Catalog=MyDatabase;Persist Security Info=true - DB2ConnectionProvider: DB2
XpoProvider=DB2;Server=MyAddress:MyPortNumber;User ID=MyUserName;Password=MyPassword;Database=MyDatabase;Persist Security Info=true - FirebirdConnectionProvider: Firebird
XpoProvider=Firebird;DataSource=localhost;User=SYSDBA;Password=masterkey;Database=MyDatabase.fdb;ServerType=0;Charset=NONE - HanaConnectionProvider: HANA
XpoProvider=HANA;Server=10.0.0.1:39017;UserID=SYSTEM;Password=MyPassword - MSSqlCEConnectionProvider: MSSqlServerCE
XpoProvider=MSSqlServerCE;Data Source=MyDatabase.sdf;Password=MyPassword - MySqlConnectionProvider: MySql
XpoProvider=MySql;Server=MyServerAddress;User ID=MyUserName;Password=MyPassword;Database=MyDatabase;Persist Security Info= true;Charset=utf8 - ODPConnectionProvider: ODP
XpoProvider=ODP;Data Source=TORCL;User ID=MyUserName;Password=MyPassword - ODPManagedConnectionProvider: ODPManaged
XpoProvider=ODPManaged;Data Source=TORCL;User ID=MyUserName;Password=MyPassword - OracleConnectionProvider: Oracle
XpoProvider=Oracle;Data Source=TORCL;User ID=MyUserName;Password=MyPassword - PervasiveSqlConnectionProvider: Pervasive
XpoProvider=Pervasive;Server=MyServerAddress;UID=MyUserName;PWD=MyPassword;ServerDSN=MyDatabase - PostgreSqlConnectionProvider: Postgres
XpoProvider=Postgres;Server=127.0.0.1;User ID=MyUserName;Password=MyPassword;Database=MyDatabase;Encoding=UNICODE - SQLiteConnectionProvider: SQLite
XpoProvider=SQLite;Data Source=filename - VistaDBConnectionProvider: VistaDB
XpoProvider=VistaDB;Data Source=C:\mydatabase.vdb4 - VistaDB5ConnectionProvider: VistaDB5
XpoProvider=VistaDB5;Data Source=C:\mydatabase.vdb5 - VistaDB6ConnectionProvider: VistaDB6
XpoProvider=VistaDB6;Data Source=C:\mydatabase.vdb6
如果不设置此属性,XPO自动使用Access数据库,并在项目文件目录下生成.mdb数据文件。
二、Session的运行时创建:利用代码
Session mySession = new Session();
private void Form1_Load(object sender, EventArgs e)
{
mySession.ConnectionString = ConnectionHelper.ConnectionString;
mySession.AutoCreateOption = DevExpress.Xpo.DB.AutoCreateOption.DatabaseAndSchema;
}
上图是利用了ORM创建好的默认设置,也可以改成你自己的连接字符串。
三、Session的应用
XPO中对数据的访问都离不开Session,例如实例化持久化对象时,构造函数需要Session作为参数。
var customer = new Customer(session1);
从数据库里获取数据时,XPCollection、XPView和XPDataView等数据集组件,也都需要使用Session初始。
XPCollection customer = new XPCollection(session1,typeof(Customer));
gridControl1.DataSource = customer;
推荐在程序入口Program.cs中通过XopDefault.GetDataLayer方法设置好Session和AutoCreateOption。
static void Main()
{
Application.EnableVisualStyles();
XpoDefault.DataLayer = XpoDefault.GetDataLayer(ConnectionHelper.ConnectionString, DevExpress.Xpo.DB.AutoCreateOption.DatabaseAndSchema);
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
这样在需要Session的地方直接使用Session.DefaultSession属性调用,而不需要实例化了,此方法适用于WinForm应用程序。
var customer = new Customer(Session.DefaultSession);
XPCollection customer = new XPCollection(Session.DefaultSession,typeof(Customer));