
你这个问题问的太强大了,让人无法回答,我这么回答,希望能给你一点启发。
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)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)