本人在乐趣搜索网的开发过程中,要求将用户的一个搜索结果集缓存到数据库中,出于性能和速度方面的考虑,要求将一个DataSet的搜索结果集作为数据库一条记录的一个Text字段来进行存储,作者经过查找资料和实践,总结出了以下简单的办法:

将DataSet数据集写入数据库:

如何将DataSet对象存储到数据库中    string strConnect = "Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;" +
如何将DataSet对象存储到数据库中        
"User ID=username;Initial Catalog=MyTempDb;Data Source=localhost";
如何将DataSet对象存储到数据库中
如何将DataSet对象存储到数据库中    OleDbConnection dbConn 
= new OleDbConnection;
如何将DataSet对象存储到数据库中    dbConn.ConnectionString 
= strConnect;
如何将DataSet对象存储到数据库中    
try
{
如何将DataSet对象存储到数据库中        StringBuilder strXml 
= new StringBuilder();
如何将DataSet对象存储到数据库中        StringWriter strWriter 
= new StringWriter( strXml );
如何将DataSet对象存储到数据库中        XmlTextWriter writer 
= new XmlTextWriter(strWriter);
如何将DataSet对象存储到数据库中        writer.WriteStartDocument();
如何将DataSet对象存储到数据库中        m_dsDataSet.WriteXml(writer);
如何将DataSet对象存储到数据库中
如何将DataSet对象存储到数据库中        
string strSQL = "INSERT INTO temp(Temp_date,Temp_data) VALUES(GETDATE(),?)";
如何将DataSet对象存储到数据库中        OleDbCommand aCommand 
= new OleDbCommand( strSQL , dbConn );
如何将DataSet对象存储到数据库中        aCommand.Parameters.Add(
"Temp_data", OleDbType.VarChar).Value = strXml.ToString();
如何将DataSet对象存储到数据库中        aCommand.Connection.Open();
如何将DataSet对象存储到数据库中
如何将DataSet对象存储到数据库中        aCommand.ExecuteNonQuery();
如何将DataSet对象存储到数据库中    }

如何将DataSet对象存储到数据库中    
catch ( OleDbException e )
{
如何将DataSet对象存储到数据库中        Debug.WriteLine(
"发生异常:" + e.ToString());
如何将DataSet对象存储到数据库中    }

从数据库中读出DataSet数据集:

如何将DataSet对象存储到数据库中    // 这里省略千篇一律的数据库的Query操作
如何将DataSet对象存储到数据库中
    OleDbDataReader aReader = aCommand.ExecuteReader( );
如何将DataSet对象存储到数据库中    
if (aReader.Read() )
{
如何将DataSet对象存储到数据库中        StringBuilder strXml 
= new StringBuilder( aReader["temp_data"].ToString() );
如何将DataSet对象存储到数据库中                    
如何将DataSet对象存储到数据库中        StringReader strReader 
= new StringReader( strXml.ToString() );
如何将DataSet对象存储到数据库中        XmlTextReader reader 
= new XmlTextReader(strReader);
如何将DataSet对象存储到数据库中
如何将DataSet对象存储到数据库中        
try
{
如何将DataSet对象存储到数据库中            m_dsDataSet.ReadXml(reader);
如何将DataSet对象存储到数据库中
如何将DataSet对象存储到数据库中            aReader.Close( ); 
如何将DataSet对象存储到数据库中        }

如何将DataSet对象存储到数据库中        
catch( OleDbException e )
{
如何将DataSet对象存储到数据库中            Debug.WriteLine(
"发生异常:" + e.ToString());
如何将DataSet对象存储到数据库中        }

如何将DataSet对象存储到数据库中    }


        注意以上例子所引用的变量m_dsDataSet的原始定义为DataSet m_dsDataSet,在这里是一个作者自定义包含有两个表和记录的DataSet实例,其中的记录来源于搜索引擎分析出的每条记录。

        在该基础上,还可以增加诸如Zip算法的压缩/解压处理,从而减少数据大小。

相关文章: