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));

 

posted @ 2022-09-11 11:01  东经115  阅读(406)  评论(0编辑  收藏  举报