最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

关于C#连接Mysql

来源:懂视网 责编:小采 时间:2020-11-09 07:40:56
文档

关于C#连接Mysql

关于C#连接Mysql:缘起 由于一些特别的原因,我再次短暂的回到 Windows ,回到了 VisualStudio2010 和 C# 。习惯了 Ubuntu/Linux 的快速高效的开发环境,对 Windows 下的开发工具的庞大臃肿反应慢既愤慨又无奈。由于不想使用和 VisaulStudio2010 相同的臃肿
推荐度:
导读关于C#连接Mysql:缘起 由于一些特别的原因,我再次短暂的回到 Windows ,回到了 VisualStudio2010 和 C# 。习惯了 Ubuntu/Linux 的快速高效的开发环境,对 Windows 下的开发工具的庞大臃肿反应慢既愤慨又无奈。由于不想使用和 VisaulStudio2010 相同的臃肿

缘起 由于一些特别的原因,我再次短暂的回到 Windows ,回到了 VisualStudio2010 和 C# 。习惯了 Ubuntu/Linux 的快速高效的开发环境,对 Windows 下的开发工具的庞大臃肿反应慢既愤慨又无奈。由于不想使用和 VisaulStudio2010 相同的臃肿的开发环境,就使用

缘起

由于一些特别的原因,我再次短暂的回到Windows,回到了Visual Studio 2010和C#。习惯了Ubuntu/Linux的快速高效的开发环境,对Windows下的开发工具的庞大臃肿反应慢既愤慨又无奈。由于不想使用和Visaul Studio 2010相同的臃肿的开发环境,就使用C#+Mysql这个组合。以下是一些记录。

正文

连接数据库最重要是找到驱动程序,ODBC、JDBC是数据库连接的接口的标准,实现这些接口称为驱动程序。无论什么语言何种平台,都需要连接数据库都需要相应的驱动器。比如连接Mysql数据库,Java就需要Java的连接器,.NET就需要.NET的连接器,像Ruby这类的脚本程序也需要相应的数据库连接包。

关于在Windows下用C#开发应用程序,如果是ASP.NET+C#的话,没的选,只有Visual Studio;如果开发C#的WinForm程序或控制台程序,IDE可以选择SharpDevelop或者MonoDevelop,SharpDevelop的启动速度很快,几乎秒开,但SharpDevelop只适用Windows;MonoDevelop可以跨平台,可以在Windows或Linux下使用。

1. C#连接Mysql

关于C#连接数据库方法是使用Mysql官方的提供的connector-net的包,然后将其引用到项目中,这个方式可以适用与任何使用C#开发的程序,包括Visual Studio和MonoDevelop创建的项目。具体的操作步骤如下:

1.下载connector

Mysql的connector-net下载地址:http://dev.mysql.com/downloads/connector/net/

2014年5月份,最新的连接版本是:6.8.3,该包中含有的文件:


其中,Vx.0表示的是.NETFramework的版本号,根据项目使用的.NETFramework选择相应的目录下的Mysql.**.dll。

2.在项目中引用 mysql-connector-net包中的MySql.Data.dll(注意引用和项目使用框架相同的版本dll)

3.设置数据库连接字符串

字符串的样例如下:

Server=localhost;user id=root;password=localhost;Database=web;Port=3306;charset=utf8;

一般而言,这里需要修改的只有password和database,其他的都可以使用默认。

4.简单测试数据库连接的demo程序

using System;
using System.Collections.Generic;
using MySql.Data.MySqlClient;//引用Mysql.data.dll中的类
 
namespace testdb
{
 class Program
 {
 static void Main(string[] args)
 {
 string query = "select * from t_user";
 MySqlConnection myConnection = new MySqlConnection("server=localhost;user id=root;password=11;database=db_user");
 MySqlCommand myCommand = new MySqlCommand(query, myConnection);
 myConnection.Open();
 myCommand.ExecuteNonQuery();
 MySqlDataReader myDataReader = myCommand.ExecuteReader();
 string bookres = "";
 while (myDataReader.Read() == true)
 {
 bookres += myDataReader["id"];
 bookres += myDataReader["userName"];
 bookres += myDataReader["password"];
 }
 myDataReader.Close();
 myConnection.Close();
 Console.WriteLine(bookres); 
 }
 }
}

2. MySQLHelper辅助类

像上面的测试连接的样例中那样,每次都自己编写相应的连接之类的非常不方便,此时,可以考虑使用一个DBhelper这样的辅助类来减少重复代码。下面是一个简单的Dbheper辅助类:

public class MySQLHelper
{
 private static string connectionString = ConfigurationManager.ConnectionStrings["mysqlconn"].ConnectionString;
 /// 
 /// 执行查询语句,返回DataSet
 /// 
 /// 查询语句
 /// DataSet
 public static DataSet Query(string SQLString)
 {
 using (MySqlConnection connection = new MySqlConnection(connectionString))
 {
 DataSet ds = new DataSet();
 try
 {
 connection.Open();
 MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
 command.Fill(ds);
 }
 catch (System.Data.SqlClient.SqlException ex)
 {
 throw new Exception(ex.Message);
 }
 finally
 {
 connection.Close();
 }
 return ds;
 }
 }
 /// 
 /// 执行SQL语句,返回影响的记录数
 /// 
 /// SQL语句
 /// 影响的记录数
 public static int ExecuteSql(string SQLString)
 {
 using (MySqlConnection connection = new MySqlConnection(connectionString))
 {
 using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
 {
 try
 {
 connection.Open();
 int rows = cmd.ExecuteNonQuery();
 return rows;
 }
 catch (System.Data.SqlClient.SqlException e)
 {
 connection.Close();
 throw e;
 }
 finally
 {
 cmd.Dispose();
 connection.Close();
 }
 }
 }
 }
 /// 
 /// 执行SQL语句,返回影响的记录数
 /// 
 /// SQL语句
 /// 影响的记录数
 public static int ExecuteSql(string[] arrSql)
 {
 using (MySqlConnection connection = new MySqlConnection(connectionString))
 {
 
 try
 {
 connection.Open();
 MySqlCommand cmdEncoding = new MySqlCommand(SET_ENCODING, connection);
 cmdEncoding.ExecuteNonQuery();
 int rows = 0;
 foreach (string strN in arrSql)
 {
 using (MySqlCommand cmd = new MySqlCommand(strN, connection))
 {
 rows += cmd.ExecuteNonQuery();
 }
 }
 return rows;
 }
 catch (System.Data.SqlClient.SqlException e)
 {
 connection.Close();
 throw e;
 }
 finally
 {
 connection.Close();
 }
 }
 }
}

备注:SQLserver代码改写成mysql很容易,由于二者格式几乎一样,而改写的部分也很少。

后记

再次回到Windows修改C#的WinForm程序,让我反思了一些问题,比如Rails到底能做到什么,桌面程序和web程序优缺点这类的问题,也算不错。不过,再次明白windows确实不是一个好的开发环境。

回想起来,自己当初在选择技术时,选择的是C#,为此花费了一年的时间来学习C#。后来,跟老师搞研究,转战Java,最后,在拥抱ubuntu一年后,选择了Rails和Ruby作为谋生的工具。这次,再次回到短暂的windows上,让我想到当初花了很长的时间学习,也应该积累了很多的经验,可惜的是都没有记下来,然后,就全忘光了。

参考文献

1..net mysql-connector-net连接mysql

2.asp.net连接Mysql(connector/net 5.0)

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

关于C#连接Mysql

关于C#连接Mysql:缘起 由于一些特别的原因,我再次短暂的回到 Windows ,回到了 VisualStudio2010 和 C# 。习惯了 Ubuntu/Linux 的快速高效的开发环境,对 Windows 下的开发工具的庞大臃肿反应慢既愤慨又无奈。由于不想使用和 VisaulStudio2010 相同的臃肿
推荐度:
标签: 连接 原因 再次
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top