|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。起首申明下,网上良多材料是错的,我重复试了良多,不是app.config设置堕落,就是能够启动程序,但一读取数据库就老是提醒堕落,上面是我的一点纪录:
1、起首下载EnterpriseLibrary,这个不必说了,必要注重的是必要用4.1版本
地点:http://www.microsoft.com/en-us/download/details.aspx?id=6228,文件名:EnterpriseLibrary4.1-October2008.msi
2、下载EnterpriseLibraryContrib,为何下面要4.1版,是由于这个Contrib中SQLite还没出撑持EnterpriseLibrary5.0的。估量5.1会出。
地点:http://entlibcontrib.codeplex.com/releases/view/38988,文件名:entlibcontrib2010-01-bin.zip
3、下载SQLite1.0.65.0版,这个也是必要旧版,为何?由于统统由EnterpriseLibraryContrib说了算,他只撑持这个版本,除非本人下他的源码修正编译。
地点:http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.65.0/,文件名:SQLite-1.0.65.0-setup.exe
利用这三个版本就仇人了,要否则反重复复呈现毛病华侈很多多少工夫。
其他就没甚么了,分离援用这几个DLL:
EntLibContrib.Common.dll
EntLibContrib.Data.SQLite.dll
Microsoft.Practices.EnterpriseLibrary.Common.dll
Microsoft.Practices.EnterpriseLibrary.Data.dll
Microsoft.Practices.ObjectBuilder2.dll
Microsoft.Practices.Unity.dll
System.Data.SQLite.dll
app.config设置以下:
<configuration>
<configSections>
<sectionname="dataConfiguration"type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,Microsoft.Practices.EnterpriseLibrary.Data,Version=4.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>
</configSections>
<dataConfigurationdefaultDatabase="SQLiteConnectionString">
<providerMappings>
<adddatabaseType="EntLibContrib.Data.SQLite.SQLiteDatabase,EntLibContrib.Data.SQLite,Version=4.1.0.0,Culture=neutral,PublicKeyToken=null"
name="System.Data.SQLite"/>
</providerMappings>
</dataConfiguration>
<connectionStrings>
<addname="SQLiteConnectionString"connectionString="DataSource=|DataDirectory|SQLiteTest.db;Pooling=true;FailIfMissing=false"
providerName="System.Data.SQLite"/>
</connectionStrings>
</configuration>
DataSource那边能够用相对路径,如D:SQLiteTestSQLiteTest.db,我这里是绝对路径了,调试时|DataDirectory|是指“程序目次bindebug”下,公布时估量放在统一目次就好了。
测试代码,数据库本人找客户端往建:
privatevoidbutton1_Click(objectsender,EventArgse)
{
intuserID=1;
stringsqlCommand=@"SELECT*FROM[UserInfo]WHERE[UserInfoID]=$UserInfoID";
Databasedb=DatabaseFactory.CreateDatabase();
DbCommanddbCommand=db.GetSqlStringCommand(sqlCommand);
db.AddInParameter(dbCommand,"$UserInfoID",DbType.Int32,userID);
using(IDataReaderrdr=db.ExecuteReader(dbCommand))
{
if(rdr.Read())
{
textBox1.Text=rdr.GetInt32(0).ToString();;
textBox2.Text=rdr.GetString(1);
}
}
}
注:$是SQLite的参数标记,就像SQLServer是@,MySQL是?一样。
测试源码和DB:vs2010的,http://files.cnblogs.com/zzmsl/SQLiteTest.rar
后续:
这里另有一些申明,能够参考下
http://entlibcontrib.codeplex.com/wikipage?title=SQLiteDataProvider41
它有很多缺点的,有兴趣可以到网上去搜索一下。于是微软有发明了“下一代”C++:C++/CLI语言,这个可以解决在.NETFramework中,托管C++产生的问题。在《程序员》杂志上,lippman和李建中合作连载介绍了C++/CLI语言。 |
|