c#连接mysql数据库工具_C# 连接MySQL数据库并进行相关操作

之前在C#使用OleDb读取Excel,生成SQL语句 中只是生成SQL语句,没有连接数据库执行。后面举得这样不方便,让改成直接插入数据库,还将了生成对应的实体类的功能。

C#连接数据库方法有很多,在①中说道了三种连接数据方法和示例,我采用的是MySQL自己的组件mysql.data.dll来连接数据库的,并封装了一些函数,虽然只用到了GetSchema(取出数据的表)和ExecuteSQLFile(执行sql文件)两个功能,其他具体的功能可以参考官方的Document。

当然一般都不会一次搞定了,在生成实体类的要获取表的字段信息,就出现获取的字段为null,后面自己琢磨和测试,发现是GetSchema中的字符串数组参数和文档中规定的顺序不一致,所以无法匹配,就返回null。下面是代码:

C#代码 37431841_1.pngDataTable dt = dbhelper.GetSchema("Databases"),dt1;

TreeNode tn,tn1;

string temp;

foreach(DataRow dr in dt.Rows)

{

temp = dr[1].ToString();

tn = new MyNode(dbhelper, temp);

//tn.Text = temp;

dt1 = dbhelper.GetSchema("Tables",new string[4]{null,temp,null,null});

foreach (DataRow dr1 in dt1.Rows)

{

tn1 = new MyNode(dbhelper,dr1[2].ToString());

tn.Nodes.Add(tn1);

}

tv.Nodes.Add(tn);

}

另外一个功能,其实是Excel文件导出SQL语句,然后执行,代码很简单,在下面的ExecuteSQLFile函数可以看到,但是也碰到了一个问题:

在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()

在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)

在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)

在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)

在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()

在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)

在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()

在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()

在 ReadXlsxData.DBConnect.ExecuteSQLFile(String fileName)

对我这个完全没有数据库经验的来说,根本看不到问题所在,只有google,虽然在stackoverflow上有这个问题但是没有解决,无奈之下,只有自己琢磨,在google到②文章,看了下,好像看到有说版本的问题,然后我就索性下载最新的mysql.data.dll,竟然出现是数据库未连接成功,原因是在我XML解析的时候错误。然后修改这部分竟然就执行成功了。

惊喜之余,附上网上找的(支持Insert,Update,Backup,Restore,Delete,Select等操作,完全可以自己加工写一个图形界面数据库管理工具了哈)加我写ExecuteSQLFile的代码:

C#代码 37431841_1.pngusing System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Diagnostics;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值