C#从数据库读取二进制到结构体

C#从数据库读取二进制到结构体,第1张

你这个问题问的太强大了,让人无法回答,我这么回答,希望能给你一点启发。

string connectionString = @"Data Source=数据库服务器地址;Initial Catalog=数据库名字;Persist Security Info=True;User ID=用户名;Password='密码'";

SqlConnection conn = new SqlConnection(connectionString);

string sqlstr = "你的查询语句";

SqlCommand com = new SqlCommand(sqlstr, conn);

connOpen();

//执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行

byte[] result = (byte[])comExecuteScalar();

//两种方法转换

//1根据你的存储方法,将这个二进制数组解析你的结构

//2如果这个二进制数组是通过将一个结构对象序列化得到的,那么反序列化就行了

SystemRuntimeSerializationFormattersBinaryBinaryFormatter bin = new SystemRuntimeSerializationFormattersBinaryBinaryFormatter();

你的结构 o = (你的结构)binDeserialize(new SystemIOMemoryStream(result));

using System;

using SystemCollectionsGeneric;

using SystemText;

using SystemConfiguration;

using SystemData;

using SystemDataOleDb;

namespace Excel

{

/// <summary>

/// Excel数据交换类

/// </summary>

public class Excel : IDisposable

{

#region 自定义类型

/// <summary>

/// 是否将第一行作为表头

/// </summary>

public enum HDR

{

/// <summary>

/// 将第一行作为表头

/// </summary>

Yes,

/// <summary>

/// 不用第一行作为表头

/// </summary>

No

};

/// <summary>

/// Excel文件格式

/// </summary>

public enum ExcelFileFormat

{

/// <summary>

/// Excel97/2003格式

/// </summary>

Excel97OR2003,

/// <summary>

/// Excel2007格式

/// </summary>

Excel2007

};

#endregion

#region 变量

private HDR _excelHDR = HDRNo;

private ExcelFileFormat _excelformat = ExcelFileFormatExcel97OR2003;

private string _connectionString2003 = "Provider=MicrosoftJetOLEDB40;Extended Properties=\"Excel 80;HDR={1};IMEX=1\";data source=\"{0}\"";

private string _connectionString2007 = "Provider=MicrosoftACEOLEDB120;Data Source=\"{0}\";Extended Properties=\"Excel 120;HDR={1};IMEX=1\";";

private string _connectionString = "";

private string _filename;

private OleDbConnection _connection;

private OleDbTransaction _tran;

#endregion

#region 属性

#region ConnectionString

/// <summary>

/// 获取系统的连接字符串

/// </summary>

public string ConnectionString

{

get

{

return this_connectionString;

}

}

#endregion

#region 是否将第一行作为表头

/// <summary>

/// 获取或设置是否将第一行作为表头

/// </summary>

public HDR ExcelHDR

{

get

{

return this_excelHDR;

}

set

{

this_excelHDR = value;

}

}

#endregion

#region Excel文件格式

/// <summary>

/// 获取或设置当前Excel文件的格式

/// </summary>

public ExcelFileFormat ExcelFormat

{

get

{

return this_excelformat;

}

set

{

this_excelformat = value;

}

}

#endregion

#endregion

#region 构造函数

/// <summary>

/// 创建一个Excel文件链接对象

/// </summary>

/// <param name="filename">Excel文件完整路径</param>

/// <param name="excelFormat">Excel文件格式</param>

public Excel(string filename, ExcelFileFormat excelFormat)

{

this_filename = filename;

if (excelFormat == ExcelFileFormatExcel97OR2003)

{

this_connectionString = stringFormat(this_connectionString2003, filename, this_excelHDR);

this_connection = new OleDbConnection(this_connectionString);

}

else if (excelFormat == ExcelFileFormatExcel2007)

{

this_connectionString = stringFormat(this_connectionString2007, filename, this_excelHDR);

this_connection = new OleDbConnection(this_connectionString);

}

}

/// <summary>

/// 创建一个Excel文件链接对象

/// </summary>

/// <param name="filename">Excel文件完整路径</param>

/// <param name="excelFormat">Excel文件格式</param>

/// <param name="hdr">是否将第一行作为表头</param>

public Excel(string filename, ExcelFileFormat excelFormat, HDR hdr)

{

this_filename = filename;

this_excelHDR = hdr;

if (excelFormat == ExcelFileFormatExcel97OR2003)

{

this_connectionString = stringFormat(this_connectionString2003, filename, this_excelHDR);

this_connection = new OleDbConnection(this_connectionString);

}

else if (excelFormat == ExcelFileFormatExcel2007)

{

this_connectionString = stringFormat(this_connectionString2007, filename, this_excelHDR);

this_connection = new OleDbConnection(this_connectionString);

}

}

~Excel()

{

thisDispose();

}

#endregion

#region 方法

#region 事务

#region 开始一个Excel文件事务

/// <summary>

/// 开始一个Excel文件事务

/// </summary>

public void BeginTransaction()

{

if (this_connectionState != ConnectionStateOpen && this_connectionState != ConnectionStateConnecting)

{

this_connectionOpen();

}

this_tran = this_connectionBeginTransaction();

}

#endregion

#region 提交一个Excel文件事务

/// <summary>

/// 提交一个Excel文件事务

/// </summary>

public void CommitTransaction()

{

if (this_tran != null)

{

this_tranCommit();

}

thisDispose();

}

#endregion

#region 回滚一个Excel文件事务

/// <summary>

/// 回滚一个Excel文件事务

/// </summary>

public void RollbackTransaction()

{

if (this_tran != null)

{

this_tranRollback();

}

thisDispose();

}

#endregion

#region 关联一个事务

/// <summary>

/// 关联一个事务

/// </summary>

/// <param name="tran">事务对象</param>

/// <param name="comm">命令对象</param>

private void AddTransactionToCommand(OleDbTransaction tran, OleDbCommand comm)

{

if (tran != null)

{

commTransaction = tran;

}

}

#endregion

#endregion

#region 查询分析

#region DataSet

#region DataSet QueryDataSet(string sql)

/// <summary>

/// 通过一个Excel-SQL语句查询

/// </summary>

/// <param name="sql">sql</param>

/// <returns>DataSet结果集</returns>

public DataSet QueryDataSet(string sql)

{

OleDbCommand sc = new OleDbCommand(sql, this_connection);

if (this_connectionState != ConnectionStateOpen && this_connectionState != ConnectionStateConnecting)

{

this_connectionOpen();

}

thisAddTransactionToCommand(this_tran, sc);

OleDbDataAdapter sda = new OleDbDataAdapter(sc);

DataSet ds = new DataSet();

try

{

sdaFill(ds);

sdaDispose();

scDispose();

}

catch (Exception e)

{

thisLogException(e);

}

return ds;

}

#endregion

#region DataSet QueryDataSet(string ProcedureName,string[] Parameters,object[] Values)

/// <summary>

/// 通过存储过程与参数进行查询

/// </summary>

/// <param name="ProcedureName">存储过程名</param>

/// <param name="Paramters">参数数组</param>

/// <param name="Values">值数组</param>

/// <returns>DataSet数据集</returns>

public DataSet QueryDataSet(string ProcedureName, string[] Parameters, object[] Values)

{

OleDbCommand sc = new OleDbCommand();

scConnection = this_connection;

if (this_connectionState != ConnectionStateOpen && this_connectionState != ConnectionStateConnecting)

{

this_connectionOpen();

}

thisAddTransactionToCommand(this_tran, sc);

scCommandText = ProcedureName;

scCommandType = CommandTypeStoredProcedure;

for (int i = 0; i < ParametersLength; i++)

{

scParametersAdd(new OleDbParameter(Parameters[i], Values[i]));

}

OleDbDataAdapter sda = new OleDbDataAdapter(sc);

DataSet ds = new DataSet();

try

{

sdaFill(ds);

sdaDispose();

scDispose();

}

catch (Exception e)

{

thisLogException(e);

}

return ds;

}

#endregion

#endregion

#region DataTable

#region DataTable QueryDataTable(string sql)

/// <summary>

/// 通过一个Excel-SQL语句查询

/// </summary>

/// <param name="sql">sql</param>

/// <returns>DataTable结果集</returns>

public DataTable QueryDataTable(string sql)

{

OleDbCommand sc = new OleDbCommand(sql, this_connection);

if (this_connectionState != ConnectionStateOpen && this_connectionState != ConnectionStateConnecting)

{

this_connectionOpen();

}

thisAddTransactionToCommand(this_tran, sc);

OleDbDataAdapter sda = new OleDbDataAdapter(sc);

DataTable dt = new DataTable();

try

{

sdaFill(dt);

sdaDispose();

scDispose();

}

catch (Exception e)

{

thisLogException(e);

}

return dt;

}

#endregion

#region DataTable QueryDataTable(string ProcedureName,string[] Parameters,object[] Values)

/// <summary>

/// 通过存储过程与参数进行查询

/// </summary>

/// <param name="ProcedureName">存储过程名</param>

/// <param name="Paramters">参数数组</param>

/// <param name="Values">值数组</param>

/// <returns>DataTable数据集</returns>

public DataTable QueryDataTable(string ProcedureName, string[] Parameters, object[] Values)

{

OleDbCommand sc = new OleDbCommand();

scConnection = this_connection;

if (this_connectionState != ConnectionStateOpen && this_connectionState != ConnectionStateConnecting)

{

this_connectionOpen();

}

thisAddTransactionToCommand(this_tran, sc);

scCommandText = ProcedureName;

scCommandType = CommandTypeStoredProcedure;

for (int i = 0; i < ParametersLength; i++)

{

scParametersAdd(new OleDbParameter(Parameters[i], Values[i]));

}

OleDbDataAdapter sda = new OleDbDataAdapter(sc);

DataTable dt = new DataTable();

try

{

sdaFill(dt);

sdaDispose();

scDispose();

}

catch (Exception e)

{

thisLogException(e);

}

return dt;

}

#endregion

#endregion

#region void

#region void Query(string sql)

/// <summary>

/// 通过一个Excel-SQL语句查询

/// </summary>

/// <param name="sql">sql</param>

public void Query(string sql)

{

OleDbCommand sc = new OleDbCommand(sql, this_connection);

if (this_connectionState != ConnectionStateOpen && this_connectionState != ConnectionStateConnecting)

{

this_connectionOpen();

}

thisAddTransactionToCommand(this_tran, sc);

try

{

scExecuteNonQuery();

scDispose();

}

catch (Exception e)

{

thisLogException(e);

}

}

#endregion

#region void Query(string ProcedureName,string[] Parameters,object[] Values)

/// <summary>

/// 通过存储过程与参数进行查询

/// </summary>

/// <param name="ProcedureName">存储过程名</param>

/// <param name="Paramters">参数数组</param>

/// <param name="Values">值数组</param>

/// <returns>DataSet数据集</returns>

public void Query(string ProcedureName, string[] Parameters, object[] Values)

{

OleDbCommand sc = new OleDbCommand();

scConnection = this_connection;

if (this_connectionState != ConnectionStateOpen && this_connectionState != ConnectionStateConnecting)

{

this_connectionOpen();

}

thisAddTransactionToCommand(this_tran, sc);

scCommandText = ProcedureName;

scCommandType = CommandTypeStoredProcedure;

for (int i = 0; i < ParametersLength; i++)

{

scParametersAdd(new OleDbParameter(Parameters[i], Values[i]));

}

try

{

scExecuteNonQuery();

scDispose();

}

catch (Exception e)

{

thisLogException(e);

}

}

#endregion

#endregion

#endregion

#region 附加功能

#region 获取所有表名称

/// <summary>

/// 获取所有表名称

/// </summary>

/// <returns>string[] 表名称</returns>

public string[] GetShemaTableName()

{

//获取数据表

if (this_connectionState != ConnectionStateOpen && this_connectionState != ConnectionStateConnecting)

{

this_connectionOpen();

}

try

{

DataTable shemaTable = this_connectionGetOleDbSchemaTable(OleDbSchemaGuidTables, new object[] { null, null, null, "TABLE" });

int n = shemaTableRowsCount;

string[] strTable = new string[n];

int m = shemaTableColumnsIndexOf("TABLE_NAME");

for (int i = 0; i < n; i++)

{

DataRow m_DataRow = shemaTableRows[i];

strTable[i] = m_DataRowItemArrayGetValue(m)ToString();

}

return strTable;

}

catch (Exception e)

{

thisLogException(e);

return null;

}

}

#endregion

#endregion

#region Excel文件 *** 作异常日志

/// <summary>

/// Excel文件错误日志记录

/// </summary>

/// <param name="e">异常信息对象</param>

private void LogException(Exception e)

{

throw new Exception(eMessage);

}

#endregion

#endregion

#region IDisposable 成员

public void Dispose()

{

#region 注销Excel文件事务

if (this_tran != null)

{

this_tranDispose();

}

#endregion

if (this_connection != null)

{

#region 关闭Excel文件连接

if (this_connectionState != ConnectionStateClosed)

{

this_connectionClose();

this_connectionDispose();

}

}

#endregion

}

#endregion

}

}

查出来排个序,显示的时候做个判断,是子节点的就加个缩进,出来就是个树。

再不你就狠一点,找个树的js,比如ztree,然后按照他需要的数据格式组织好数据,出来的也是个树,而且很漂亮

方法/步骤

1

第一导入数据结构

打开本地计算机上的

sql

server

management

studio

客户端软件:

2

本地电脑:登陆本机数据库连接控制端:

3

选择您要导出到服务器的数据库然后鼠标右键:选择生成sql脚本:

4

选中本地电脑需要导出脚本的库名字

5

需要选择选择兼容sql2005的版本的脚本:

修改sql脚本的保存路径:记录下这个路径

查看生产脚本生成的选项:

成功生成sql脚本:并记录下脚本导出的路径

连接到虚拟主机提供的目标数据库服务器:

并点击新建查询,拷贝您导出的

sql

脚本代码(此代码为第一步导出的sql脚本代码)到上图显示的查询分析器中,点击分析脚本,如果没有语法错误,就点击执行脚本,直到执行完毕。

导入数据结构完毕

第二:导入数据库数据

下面咱们开始导入数据库表中的数据:登陆您本地的数据库:

点击您本地计算机上的数据库右键-任务-导出数据:

选择目标数据库,如下添加虚拟主机提供给您的数据库信息(服务器地址,用户名,密码,数据库):

点击下一步,点击下一步,选中所有表,并确保“目标”

点击下一步,直到执行完毕:这样你的本地数据库就导入到虚拟主机上了

导入数据库数据完毕

以上就是关于C#从数据库读取二进制到结构体全部的内容,包括:C#从数据库读取二进制到结构体、怎么用C#语言实现读取EXCEL的表格结构,在把表格中的数据导入到数据库中、读取数据库的数据 在页面生成树形结构(jsp)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9843369.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存