新近写了个通用的数据库访问类(c#);支持oledb\sql\oracle\odbc数据连接,
提供sysbase,db2  的接口支持,
如果有什么错误、意见、建议。请联系我yu_nan88@126.com

http://mail.gongyi.gov.cn/netdisk/download.php?user=zhaobin@gongyi.gov.cn&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");
  }

 }

}



http://blog.csdn.net/yu_nan88/archive/2005/01/25/267063.aspx
posted on 2007-01-29 14:48  mbskys  阅读(278)  评论(0)    收藏  举报