用c#读取并分析sql2005日志

用过logExplorer的朋友都会被他强悍的功能吸引,我写过一篇详细的操作文档可以参考
http://blog.csdn.net/jinjazz/archive/2008/05/19/2459692.aspx

我们可以自己用开发工具来实现sql日志的读取,这个应用还是很酷的,具体思路

1、首先要了解一个没有公开的系统函数::fn_dblog,他可以读取sql日志,并返回二进制的行数据
2、然后要了解sql的二进制数据是如何存储的,这个可以参考我的blog文章
http://blog.csdn.net/jinjazz/archive/2008/08/07/2783872.aspx
3、用自己擅长的开发工具来分析数据,得到我们需要的信息

我用c#写了一个测试样例,分析了int,char,datetime和varchar的日志情况而且没有考虑null和空字符串的保存,希望感兴趣的朋友能和我一起交流打造属于自己的日志分析工具

详细的试验步骤以及代码如下:

1、首先建立sqlserver的测试环境,我用的sql2005,这个过程不能保证在之前的版本中运行
以下sql语句会建立一个dbLogTest数据库,并建立一张log_test表,然后插入3条数据之后把表清空
  1. use master
  2. go
  3. create database dbLogTest
  4. go
  5. use  dbLogTest
  6. go
  7. create table log_test(id int ,code char(10),name varchar(20),date datetime,memo varchar(100))
  8. insert into log_test select 100, 'id001','jinjazz',getdate(),'剪刀'
  9. insert into log_test select 65549,'id002','游客',getdate()-1,'这家伙很懒,没有设置昵称'
  10. insert into log_test select -999,'id003','这家伙来自火星',getdate()-1000,'a'
  11. delete from log_test
  12. --use master 
  13. --go
  14. --drop database dbLogTest
  15.  

2、我们最终的目的是要找到被我们删掉的数据

3、分析日志的c#代码:我已经尽量详细的写了注释
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace ConsoleApplication21
  5. {
  6.     class Program
  7.     {
  8.         /// <summary>
  9.         /// 分析sql2005日志,找回被delete的数据,引用请保留以下信息
  10.         /// 作者:jinjazz (csdn的剪刀)
  11.         /// 作者blog:http://blog.csdn.net/jinjazz
  12.         /// </summary>
  13.         /// <param name="args"></param>
  14.         static void Main(string[] args)
  15.         {
  16.             using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection())
  17.             {
  18.                 conn.ConnectionString = "server=localhost;uid=sa;pwd=sqlgis;database=dbLogTest";
  19.                 conn.Open();
  20.                 using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand())
  21.                 {
  22.                     //察看dbo.log_test对象的sql日志
  23.  
  • 1
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
C# 中,可以将图片保存到 SQL 数据库中,也可以从 SQL 数据库中读取图片。下面是一个简单的示例: 保存图片到 SQL 数据库中: ```csharp // 假设您已经将图片存储在了 byte[] buffer 中,并且有一个名为 "Images" 的表来存储图片 // 创建一个 SqlConnection 对象 using (var connection = new SqlConnection("your_connection_string")) { // 打开连接 connection.Open(); // 创建一个 SqlCommand 对象 using (var command = new SqlCommand("INSERT INTO Images (Image) VALUES (@Image)", connection)) { // 将图片数据添加到参数集合中 command.Parameters.Add("@Image", SqlDbType.Image).Value = buffer; // 执行命令 command.ExecuteNonQuery(); } } ``` 从 SQL 数据库中读取图片: ```csharp // 假设您要从 "Images" 表中获取图片数据并显示在 PictureBox 控件中 // 创建一个 SqlConnection 对象 using (var connection = new SqlConnection("your_connection_string")) { // 打开连接 connection.Open(); // 创建一个 SqlCommand 对象 using (var command = new SqlCommand("SELECT Image FROM Images WHERE Id = @Id", connection)) { // 添加参数 command.Parameters.Add("@Id", SqlDbType.Int).Value = 1; // 假设您要获取 Id 为 1 的图片 // 执行查询并获取 SqlDataReader 对象 using (var reader = command.ExecuteReader()) { // 读取数据 if (reader.Read()) { // 获取图片数据 var buffer = (byte[])reader["Image"]; // 创建一个 MemoryStream 对象 using (var stream = new MemoryStream(buffer)) { // 使用 Image.FromStream 方法将 buffer 转换为一个 Image 对象 var image = Image.FromStream(stream); // 将 Image 对象显示在 PictureBox 控件中 pictureBox1.Image = image; } } } } } ``` 请注意,这只是一个简单的示例,实际实现可能会因为数据格式、表结构等因素而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值