新近写了个通用的数据库访问类(c#);支持oledb\sql\oracle\odbc数据连接, 提供sysbase,db2 的接口支持, 如果有什么错误、意见、建议。请联系我[email protected]
http://mail.gongyi.gov.cn/netdisk/[email protected]&id=2712a90f0de399014bfbea6e697381a3&filename=L7mk1/cvTXlQRE8ucmFy&language=gb 经过不完全测试: 测试代码: using System; using System.Collections; using System.IO;
using NUnit.Framework; using MyPDO.DataAccess;
namespace DataAccessTest { /// <summary> /// Class1 的摘要说明。 /// </summary> [TestFixture] public class DataAccessTest { public DataAccessTest() { // // TODO: 在此处添加构造函数逻辑 // } private MyPDO.DataAccess.DataAccessor DBA;
[SetUp] public void SetUp() { DBA = new DataAccessor(); DBA.ConnectString = "Provider=SQLOLEDB;data source=10.10.25.63;initial catalog=Master;user id=zha;Password=123;"; DBA.ConnectType = MyPDO.ConnectType.OleDbDataDriver; DBA.Open(); Assert.IsTrue(DBA.IsOpen,"DBA closed"); } [Test] public void ExecuteNonQueryTest() { Hashtable hsTable = new Hashtable(); hsTable.Add("A","select * from myfiles"); DBA. Assert.IsTrue(DBA.IsOpen,"DBA closed"); if (DBA.IsOpen == true) { DBA.ExecuteNonQuery(hsTable); } } [Test] public void GetDataSetTest() { System.Data.DataSet ds = new System.Data.DataSet(); Assert.IsTrue(DBA.IsOpen,"DBA closed"); if (DBA.IsOpen == true) { DBA.CommandText = "select * from myfiles"; ds = DBA.GetDataSet(); } } [Test] public void GetDataTableTest() { Assert.IsTrue(DBA.IsOpen,"DBA closed"); if (DBA.IsOpen == true) { DBA.CommandText = "select * from myfiles"; System.Data.DataTable dts = DBA.GetDataTable(); } } [Test] public void GetDataReaderTest() { Assert.IsTrue(DBA.IsOpen,"DBA closed"); if (DBA.IsOpen == true) { DBA.CommandText = "select * from myfiles"; System.Data.IDataReader dtReader = DBA.GetDataReader(); dtReader.Close(); } } [Test] public void ExecuteCommandTest() { Assert.IsTrue(DBA.IsOpen,"DBA closed"); if (DBA.IsOpen == true) { DBA.CommandText = "select * from myfiles"; DBA.ExecuteCommand(false); } } [Test] public void SetCommandParametersTest() { System.Data.OleDb.OleDbParameter parms = new System.Data.OleDb.OleDbParameter(); parms.ParameterName = "@path"; parms.OleDbType = System.Data.OleDb.OleDbType.VarChar; parms.Size = 255; parms.SourceColumn = "path"; parms.Value = "222"; System.Data.OleDb.OleDbParameter parms1 = new System.Data.OleDb.OleDbParameter(); parms1.ParameterName = "@fname"; parms1.OleDbType = System.Data.OleDb.OleDbType.VarChar; parms1.Size = 255; parms1.SourceColumn = "fname"; parms1.Value = "1";
MyPDO.DataAccess.DataAccessor DBA = new DataAccessor(); DBA.ConnectString = "Provider=SQLOLEDB;data source=10.10.25.63;initial catalog=Master;user id=zha;Password=123;"; DBA.Open(); if (DBA.IsOpen == true) { DBA.CommandText = "select * from myfiles where path = ? and fname = ?"; DBA.SetCommandParameter(parms,false); DBA.SetCommandParameter(parms1,false); System.Data.DataSet ds = DBA.GetDataSet(); Assert.AreEqual(1,ds.Tables[0].Rows.Count); DBA.Close(); } } [Test] public void AllUseTest() { this.ExecuteCommandTest(); this.ExecuteNonQueryTest(); this.GetDataReaderTest(); this.GetDataReaderTestWithParamBlob(); this.GetDataReaderTestWithParamString(); this.GetDataSetTest(); this.GetDataTableTest(); this.SetCommandParametersTest(); } [Test] public void GetDataReaderTestWithParamString() { System.Data.OleDb.OleDbParameter parms = new System.Data.OleDb.OleDbParameter(); parms.ParameterName = "@path"; //parms.OleDbType = System.Data.OleDb.OleDbType.VarChar; //parms.Size = 255; //parms.SourceColumn = "path"; parms.Value = "eeee"; System.Data.OleDb.OleDbParameter parms1 = new System.Data.OleDb.OleDbParameter(); parms1.ParameterName = "@fname"; //parms1.OleDbType = System.Data.OleDb.OleDbType.VarChar; //parms1.Size = 255; //parms1.SourceColumn = "fname"; parms1.Value = "1";
Assert.IsTrue(DBA.IsOpen,"DBA closed"); { DBA.CommandText = "select * from myfiles where path = ? and fname = ?"; DBA.SetCommandParameter(parms,false); DBA.SetCommandParameter(parms1,false);
System.Data.IDataReader dtReader = DBA.GetDataReader(); dtReader.Read(); string strPath = dtReader.GetString(0); Assert.AreEqual("eeee",strPath); dtReader.Close(); } } [Test] public void GetDataReaderTestWithParamBlob() { System.Data.OleDb.OleDbParameter parms = new System.Data.OleDb.OleDbParameter(); parms.ParameterName = "@path"; //parms.OleDbType = System.Data.OleDb.OleDbType.Numeric; //parms.Size = 8; //parms.SourceColumn = "c"; parms.Value = 999; System.Data.OleDb.OleDbParameter parms1 = new System.Data.OleDb.OleDbParameter(); parms1.ParameterName = "@fname"; //parms1.OleDbType = System.Data.OleDb.OleDbType.Binary; //parms1.Size = 16; //parms1.SourceColumn = "a"; parms1.Value = GetPhoto(@"c:\a.jpg"); //parms1.Value = "111111111111111111111";
//System.Data.OleDb.OleDbParameter parms2 = new System.Data.OleDb.OleDbParameter()
Assert.IsTrue(DBA.IsOpen,"DBA closed"); { DBA.CommandText = "insert into test(c,a) values(convert(money,?),?) ";
//DBA.CommandText = "insert into myfiles(path,fname) values(?,?)"; DBA.SetCommandParameter(parms,false); DBA.SetCommandParameter(parms1,false);
DBA.ExecuteCommand(true); } } public static byte[] GetPhoto(string filePath) { FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close(); fs.Close();
return photo; } [Test] public void ExecuteStoredProcedureTestOneValue() { if (DBA.IsOpen == true) { DBA.CommandText = "exec get_2 '222'"; object j = DBA.ExecuteStoredProcedure(MyPDO.StoredProcedureType.OneValue); string s = (string)j; Assert.AreEqual("222",s); } } [Test] public void ExecuteStoredProcedureTestNone() { if (DBA.IsOpen == true) { DBA.CommandText = "exec get_2 '222'"; object s = DBA.ExecuteStoredProcedure(MyPDO.StoredProcedureType.None); Assert.AreEqual(null,s); } else Assert.AreEqual(null,"1"); } [Test] public void ExecuteStoredProcedureTestDataSet() { if (DBA.IsOpen == true) { DBA.CommandText = "exec get_2 'ddddd'"; object s = DBA.ExecuteStoredProcedure(MyPDO.StoredProcedureType.DataSet);
System.Data.DataSet ds = (System.Data.DataSet)s;
if(ds.Tables.Count > 0) { System.Data.DataTable dt = new System.Data.DataTable(); dt = ds.Tables[0]; int str = dt.Rows.Count; Assert.AreEqual(3,str); } else Assert.AreEqual(null,"s"); } else Assert.AreEqual(null,"1"); } } }

|