

|
public class Product
{
public string Name; //名称
public decimal Price;//价格
public int Count;//数量
}
可以按照如下方法使用Product类:
Product p=new Product();
//……处理Product
|
|
public class Form
{
public string ID; //入库单编号
public DateTime AddTime; //入库时间
public FormDetail[] FormDetails; //入库单明细
}
public class FormDetail
{
public Product InProduct; //入库产品
public int Count; //入库数量
}
|
|
public class FormDetailsCollection: ArrayList
{
public void Add(FormDetail detail)
{
base.Add(detail);
}
public new FormDetail this[int nIndex]
{
get
{
return (FormDetail)base[nIndex];
}
}
}
|
|
[TableMap("Schdule","GUID")]
[WebsharpEntityInclude(typeof(Schdule))]
public abstract class Schdule : PersistenceCapable
{
[ColumnMap("GUID",DbType.String,"")]
public abstract string GUID{get;set;}
[ColumnMap("UserID",DbType.String,"")]
public abstract string UserID{get;set;}
[ColumnMap("StartTime",DbType.DateTime)]
public abstract DateTime StartTime{get;set;}
[ColumnMap("EndTime",DbType.DateTime)]
public abstract DateTime EndTime{get;set;}
[ColumnMap("Title",DbType.String,"")]
public abstract string Title{get;set;}
[ColumnMap("Description",DbType.String,"")]
public abstract string Description{get;set;}
[ColumnMap("RemidTime",DbType.DateTime)]
public abstract DateTime RemidTime{get;set;}
[ColumnMap("AddTime",DbType.DateTime)]
public abstract DateTime AddTime{get;set;}
[ColumnMap("Status",DbType.Int16,0)]
public abstract short Status{get;set;}
}
|
|
Schdule schdule = EntityManager.CreateObject(typeof(Schdule)) as Schdule;
|
|
EntityData schdule =EntityManager.GetEntityData("Schdule");
|
|
string Title = schdule["Title"]
|

|
Schdule schdule=new Schdule(……);
PersistenceManager PM=PMFactory.initialize(……);
Pm.persist(schdule);
|
|
public bool AddSchdule(Schdule schdule)
{
PersistenceManager pm =
PersistenceManagerFactory.Instance().CreatePersistenceManager();
try
{
pm.PersistNewObject(schdule);
return true;
}
catch
{
return false;
}
finally
{
pm.Close();
}
}
|
|
public bool AddSchdule(Schdule schdule)
{
if(!CheckSchdule(schdule))
return false;
PersistenceManager pm =
PersistenceManagerFactory.Instance().CreatePersistenceManager();
Transaction trans = pm.CurrentTransaction;
trans.Begin();
try
{
pm.PersistNewObject(schdule);
trans.Commit();
return true;
}
catch
{
trans.Rollback();
return false;
}
finally
{
pm.Close();
}
}
|
|
public bool AddSchdule(Schdule schdule,string[] otherPeoples)
{
if(!CheckSchdule(schdule))
return false;
PersistenceManager pm =
PersistenceManagerFactory.Instance().CreatePersistenceManager();
Transaction trans = pm.CurrentTransaction;
trans.Begin();
try
{
pm.PersistNewObject(schdule);
foreach(string otherPeople in otherPeoples)
{
Schdule s = EntityManager.CreateObject(typeof(Schdule)) as Schdule;
s.GUID = Guid.NewGuid().ToString();
s.UserID = otherPeople;
s.StartTime = schdule.StartTime;
s.EndTime = schdule.StartTime;
s.Title = schdule.Title;
s.Description = schdule.Description;
s.RemidTime = schdule.RemidTime;
s.AddTime = DateTime.Now;
s.Status = 0;
pm.PersistNewObject(s);
}
trans.Commit();
return true;
}
catch
{
trans.Rollback();
return false;
}
finally
{
pm.Close();
}
}
|
|
public interface ISecuritySystem
{
bool Login(string userID,string password);
void Logout();
bool IsLogin();
Suser CurrentUser();
}
……
//在需要调用服务的客户端:
ISecuritySystem ss = ServiceLocator.FindService(
"SecurityService",typeof(ISecuritySystem)) as ISecuritySystem;
|
|
double price = 100 ;
|
|
struct product
{
char* name;
double price;
double weight;
}
|
|
public class Product
{
public String name;
public double price;
public double weight;
}
|
|
public class Product
{
public String name;
public double price;
public double weight;
public Size size;
}
public class Size
{
public int height;
public int width;
}
|




|
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description>Here is the description of the test's beans</description>
<enterprise-beans>
<entity>
<description>... Bean example one ...</description>
<display-name>Bean example two</display-name>
<ejb-name>ExampleTwo</ejb-name>
<home>tests.Ex2Home</home>
<remote>tests.Ex2</remote>
<ejb-class>tests.Ex2Bean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>tests.Ex2PK</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>1.x</cmp-version>
<cmp-field>
<field-name>field1</field-name>
</cmp-field>
<cmp-field>
<field-name>field2</field-name>
</cmp-field>
<cmp-field>
<field-name>field3</field-name>
</cmp-field>
<primkey-field>field3</primkey-field>
<env-entry>
<env-entry-name>name1</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>value1</env-entry-value>
</env-entry>
</entity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>ExampleTwo</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Supports</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
|
|
<?xml version="1.0"?>
<jdo>
<package name="org.lgd.test">
<class name="Human" objectid-class="Human$ObjectId">
<field name="ID" primary-key="true"/>
<field name="name" primary-key="true"/>
<field name="dress">
<collection element-type="Dress"/>
</field>
</class>
<class name="Dress">
<field name="color">
<map key-type="String" value-type="ColorTye"/>
</field>
</class>
<class name="ColorTye">
<field name="red" embedded="true"/>
<field name="blue" embedded="true"/>
</class>
</package>
<package name="org.lgd.test">
<class name="Human"/>
<class name="Asian" persistence-capable-superclass="Human">
<field name="country">
<collection element-type="Asua$Chinese"/>
<extension vendor-name="kodo" key="inverse-owner" value="Human"/>
</field>
</class>
<class name="Human$Asian"/>
</package>
</jdo>
|
|
[TableMap("Schdule","GUID")]
[WebsharpEntityInclude(typeof(Schdule))]
public abstract class Schdule : PersistenceCapable
{
[ColumnMap("GUID",DbType.String,"")]
public abstract string GUID{get;set;}
[ColumnMap("UserID",DbType.String,"")]
public abstract string UserID{get;set;}
[ColumnMap("StartTime",DbType.DateTime)]
public abstract DateTime StartTime{get;set;}
[ColumnMap("EndTime",DbType.DateTime)]
public abstract DateTime EndTime{get;set;}
[ColumnMap("Title",DbType.String,"")]
public abstract string Title{get;set;}
[ColumnMap("Description",DbType.String,"")]
public abstract string Description{get;set;}
[ColumnMap("RemidTime",DbType.DateTime)]
public abstract DateTime RemidTime{get;set;}
[ColumnMap("AddTime",DbType.DateTime)]
public abstract DateTime AddTime{get;set;}
[ColumnMap("Status",DbType.Int16,0)]
public abstract short Status{get;set;}
}
|
|
public interface CustomerHome extends EJBHome
{
public Customer create(String CustomerID,String CustomerName)
throws RemoteException , CreateException;
public Customer findByrimaryKey(String CustomerID)
throws RemoteException , FinderException;
}
|
|
public interface Customer extends EJBObject
{
public void setCustomerName(String customerName) throws RemoteException;
public String getCustomerName() throws RemoteException;
}
|
|
public class CustomerEJB implements EntityBean
{
public String customerID;
public String customerName;
public void setCustomerName(String customerName)
{
this.customerName = customerName ;
}
public String getCustomerName()
{
return this.customerName;
}
}
|
|
Customer customer = new Customer(“12345”);
customer.setCustomerName(“My Customer”);
PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory(props);
PersistenceManager pm = pmf.getPersistenceManager();
pm.makePersistent(customer);
pm.close();
|
|
public interface Query extends java.io.Serializable
{
void setClass(Class cls);
void setCandidates(Extent pcs);
void setCandidates(Collection pcs);
void setFilter(String filter);
void declareImports(String imports);
void declareParameters(String parameters);
void declareVariables(String variables);
void setOrdering(String ordering);
void setIgnoreCache(boolean ignoreCache);
boolean getIgnoreCache();
void compile();
Object execute();
Object execute(Object p1);
Object execute(Object p1, Object p2);
Object execute(Object p1, Object p2, Object p3);
Object executeWithMap (Map parameters);
Object executeWithArray (Object[] parameters);
void close (Object queryResult);
void closeAll ();
}
|
|
Class empClass = Employee.class;
Extent clnEmployee = pm.getExtent (empClass, false);
String filter = “salary > sal”;
Query q = pm.newQuery (clnEmployee, filter);
String param = “Float sal”;
q.declareParameters (param);
Collection emps = (Collection) q.execute (new Float (30000.));
|
|
public interface DataAccess
{
#region Support Property & Method
DatabaseType DatabaseType{get;}
IDbConnection DbConnection{get;}
IDbTransaction BeginTransaction();
void Open();
void Close();
bool IsClosed{get;}
#endregion
#region ExecuteNonQuery
int ExecuteNonQuery(CommandType commandType, string commandText);
int ExecuteNonQuery(string commandText);
int ExecuteNonQuery(string commandText, QueryParameterCollection commandParameters);
int ExecuteNonQuery(CommandType commandType, string commandText, QueryParameterCollection commandParameters);
#endregion ExecuteNonQuery
//……因篇幅的原因,这里没有列出所有的方法,关于其他方法的定义请参见源代码。
}
|

|
public abstract class AbstractDataAccess : DataAccess
{
#region DataAccess
#region Support Property & method
public abstract DatabaseType DatabaseType{get;}
public abstract IDbConnection DbConnection{get;}
public void Close()
{
this.DbConnection.Close();
}
public void Open()
{
if(this.DbConnection.State.Equals(ConnectionState.Closed))
this.DbConnection.Open();
}
……
#endregion Support Property & method
#region ExecuteNonQuery
public int ExecuteNonQuery(CommandType commandType, string commandText)
{
return this.ExecuteNonQuery(commandType, commandText, null);
}
public int ExecuteNonQuery(string commandText)
{
return this.ExecuteNonQuery(CommandType.Text, commandText, null);
}
public int ExecuteNonQuery(string commandText, QueryParameterCollection commandParameters)
{
return this.ExecuteNonQuery(CommandType.Text, commandText, commandParameters);
}
public abstract int ExecuteNonQuery(CommandType commandType, string commandText, QueryParameterCollection commandParameters);
#endregion ExecuteNonQuery
protected void SyncParameter(QueryParameterCollection commandParameters)
{
if((commandParameters!=null) && (commandParameters.Count>0) )
{
for(int i=0;i<commandParameters.Count;i++)
{
commandParameters[i].SyncParameter();
}
}
}
}
|
|
public sealed class MSSqlDataAccess : AbstractDataAccess
{
#region Constructor
public MSSqlDataAccess(SqlConnection conn)
{
this.m_DbConnection=conn;
}
public MSSqlDataAccess(string connectionString)
{
this.m_DbConnection=new SqlConnection(connectionString);
}
#endregion
#region DataAccess
#region Support Property & method
public override DatabaseType DatabaseType
{
get{return DatabaseType.MSSQLServer;}
}
private SqlConnection m_DbConnection;
public override IDbConnection DbConnection
{
get
{
return m_DbConnection;
}
}
private SqlTransaction trans=null;
public override IDbTransaction BeginTransaction()
{
trans=m_DbConnection.BeginTransaction();
return trans;
}
#endregion Support Property & method
#region ExecuteNonQuery
public override int ExecuteNonQuery(CommandType commandType, string commandText, QueryParameterCollection commandParameters)
{
SqlCommand cmd=new SqlCommand();
PrepareCommand(cmd,commandType, commandText,commandParameters);
int tmpValue=cmd.ExecuteNonQuery();
SyncParameter(commandParameters);
cmd.Parameters.Clear();
return tmpValue;
}
#endregion ExecuteNonQuery
#region ExecuteDataSet
public override DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters,DataSet ds,string tableName)
{
SqlCommand cmd=new SqlCommand();
PrepareCommand(cmd,commandType, commandText,commandParameters);
SqlDataAdapter da=new SqlDataAdapter(cmd);
if(Object.Equals(tableName,null) || (tableName.Length<1))
da.Fill(ds);
else
da.Fill(ds,tableName);
SyncParameter(commandParameters);
cmd.Parameters.Clear();
return ds;
}
#endregion ExecuteDataSet
#region ExecuteReader
public override IDataReader ExecuteReader(CommandType commandType, string commandText, QueryParameterCollection commandParameters)
{
SqlCommand cmd=new SqlCommand();
PrepareCommand(cmd,commandType, commandText,commandParameters);
SqlDataReader dr=cmd.ExecuteReader();
SyncParameter(commandParameters);
cmd.Parameters.Clear();
return dr;
}
#endregion ExecuteReader
#region ExecuteScalar
public override object ExecuteScalar(CommandType commandType, string commandText, QueryParameterCollection commandParameters)
{
SqlCommand cmd=new SqlCommand();
PrepareCommand(cmd,commandType, commandText,commandParameters);
object tmpValue=cmd.ExecuteScalar();
SyncParameter(commandParameters);
cmd.Parameters.Clear();
return tmpValue;
}
#endregion ExecuteScalar
#region ExecuteXmlReader
public override XmlReader ExecuteXmlReader(CommandType commandType, string commandText, QueryParameterCollection commandParameters)
{
SqlCommand cmd=new SqlCommand();
PrepareCommand(cmd,commandType, commandText,commandParameters);
XmlReader reader=cmd.ExecuteXmlReader();
SyncParameter(commandParameters);
cmd.Parameters.Clear();
return reader;
}
#endregion ExecuteXmlReader
#endregion
private void PrepareCommand(SqlCommand cmd,CommandType commandType, string commandText, QueryParameterCollection commandParameters)
{
cmd.CommandType=commandType;
cmd.CommandText=commandText;
cmd.Connection=this.m_DbConnection;
cmd.Transaction=trans;
if((commandParameters!=null) && (commandParameters.Count>0) )
{
for(int i=0;i<commandParameters.Count;i++)
{
commandParameters[i].InitRealParameter(DatabaseType.MSSQLServer);
cmd.Parameters.Add(commandParameters[i].RealParameter as SqlParameter);
}
}
}
}
|
|
public sealed class DataAccessFactory
{
private DataAccessFactory(){}
private static DatabaseProperty defaultDatabaseProperty;
public static DatabaseProperty DefaultDatabaseProperty
{
get{return defaultDatabaseProperty;}
set{defaultDatabaseProperty=value;}
}
public static DataAccess CreateDataAccess(DatabaseProperty pp)
{
DataAccess dataAccess;
switch(pp.DatabaseType)
{
case(DatabaseType.MSSQLServer):
dataAccess = new MSSqlDataAccess(pp.ConnectionString);
break;
case(DatabaseType.Oracle):
dataAccess = new OracleDataAccess(pp.ConnectionString);
break;
case(DatabaseType.OleDBSupported):
dataAccess = new OleDbDataAccess(pp.ConnectionString);
break;
default:
dataAccess=new MSSqlDataAccess(pp.ConnectionString);
break;
}
return dataAccess;
}
public static DataAccess CreateDataAccess()
{
return CreateDataAccess(defaultDatabaseProperty);
}
}
|
|
DataAccess dao=DataAccessFactory.CreateDataAccess(persistenceProperty);
db.Open();
db.需要的操作
db.Close();
|
|
[AttributeUsage(AttributeTargets.Class)]
public class TableMapAttribute : Attribute
{
private string tableName;
private string[] primaryKeys;
public TableMapAttribute(string tableName,params string[] primaryKeys)
{
this.tableName = tableName;
this.primaryKeys = primaryKeys;
}
public string TableName
{
get{return tableName;}
set{tableName = value;}
}
public string[] PrimaryKeys
{
get{return primaryKeys;}
set{primaryKeys = value;}
}
}
|
|
[AttributeUsage(AttributeTargets.Property)]
public class ColumnMapAttribute : Attribute
{
private string columnName;
private DbType dbtype;
private object defaultValue;
public ColumnMapAttribute(string columnName,DbType dbtype)
{
this.columnName = columnName;
this.dbtype = dbtype;
}
public ColumnMapAttribute(string columnName,DbType dbtype,object defaultValue)
{
this.columnName = columnName;
this.dbtype = dbtype;
this.defaultValue = defaultValue;
}
public string ColumnName
{
get{return columnName;}
set{columnName = value;}
}
public DbType DbType
{
get{return dbtype;}
set{dbtype = value;}
}
public object DefaultValue
{
get{return defaultValue;}
set{defaultValue = value;}
}
}
|
|
[AttributeUsage(AttributeTargets.Property)]
public class ReferenceObjectAttribute : Attribute
{
private Type referenceType;
private string primaryKey;
private string foreignKey;
public ReferenceObjectAttribute(Type referenceType,string primaryKey,string foreignKey)
{
this.referenceType = referenceType;
this.primaryKey = primaryKey;
this.foreignKey = foreignKey;
}
public ReferenceObjectAttribute(){}
public Type ReferenceType
{
get{return referenceType;}
set{referenceType = value;}
}
public string PrimaryKey
{
get{return primaryKey;}
set{primaryKey = value;}
}
public string ForeignKey
{
get{return foreignKey;}
set{foreignKey = value;}
}
}
|
|
[AttributeUsage(AttributeTargets.Property)]
public class SubObjectAttribute : Attribute
{
private Type subObjectType;
private string primaryKey;
private string foreignKey;
public SubObjectAttribute(Type subObjectType, string primaryKey, string foreignKey)
{
this.subObjectType = subObjectType;
this.primaryKey = primaryKey;
this.foreignKey = foreignKey;
}
public SubObjectAttribute(){}
public Type SubObjectType
{
get { return subObjectType; }
set { subObjectType = value; }
}
public string PrimaryKey
{
get{return primaryKey;}
set{primaryKey = value;}
}
public string ForeignKey
{
get{return foreignKey;}
set{foreignKey = value;}
}
}
|
|
[AttributeUsage(AttributeTargets.Property)]
& |