alinq mysql_ALinq让Mysql变得如此简单_MySQL

当大家已经习惯了使用.net 去操作SQL Server,有多少人曾经尝试过使用.net 去操作Mysql数据库!在.net 的光环下,Mysql是显得如此微不足道!但是Mysql的开源又是如此具有诱惑。

1. ADO.NET 方式连接Mysql数据库

经过在网上查找资料,在.net 上连接mysql 数据库有三种方式:

方法一:

使用CoreLab推出的MYSQL访问组件,引用命名空间CoreLab.MySql

方法二:

通过ODBC访问MYSQL数据库, 前要先下载两个组件:odbc.net和MYSQL的ODBC驱动,可以使用ODBC访问Mysql数据库

方法三:

使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL,该组件为MYSQL为ADO.NET访问MYSQL数据库设计的.NET访问组件,使用MySql.Data.MySqlClient

以上三种方式的说明可以具体参照文章:

http://blog.csdn.net/lxh0959/archive/2008/08/05/2773424.aspx 此篇文章对此做了详细说明

这里要说明的是第三种方式,这种访问方式完全遵循我们Ado.net 访问SQL Server的模式,所以使用起来也更加得心应手。

ADO.NET driver for MySQL 下载地址:

官方网站: http://www.mysql.com/downloads/

2. 基础数据库操作

使用ADO.net 操作数据库,固定不变的模式,五个核心对象

Connection: Connection 对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。

Command:Command 对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。

DataAdapter: DataSetCommand 对象主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。

DataSet:DataSet 这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataSetCommand 对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataSetCommand 对象上,本身不具备和数据源沟通的能力。

DataReader: 当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好.using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using MySql.Data.MySqlClient;

namespace CimDataImport

{

public class TestCharacter

{

public const string mysqlConnection = "User Id=root;Host=localhost;Database=cim;password=root";

/// /// 添加数据

///

///

public int Add(UserBase entity)

{

string sql = "INSERT INTO cimuser (userid,userNickName) VALUE (@userid,@userNickName)";

using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))

{

mycn.Open();

MySqlCommand command = new MySqlCommand(sql, mycn);

command.Parameters.AddWithValue("@userid", entity.UserId);

command.Parameters.AddWithValue("@userNickName",entity.UserNickName);

return command.ExecuteNonQuery();

}

}

/// /// 修改数据

///

///

///

public int Update(UserBase entity)

{

string sql = "UPDATE cimuser SET userNickName=@userNickName WHERE userid=@userid";

using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))

{

mycn.Open();

MySqlCommand command = new MySqlCommand(sql, mycn);

command.Parameters.AddWithValue("@userid", entity.UserId);

command.Parameters.AddWithValue("@userNickName", entity.UserNickName);

return command.ExecuteNonQuery();

}

}

/// /// 删除数据

///

///

///

public int Delete(int primaryKey)

{

string sql = "DELETE FROM cimuser WHERE userid=@userid";

using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))

{

mycn.Open();

MySqlCommand command = new MySqlCommand(sql, mycn);

command.Parameters.AddWithValue("@userid", primaryKey);

return command.ExecuteNonQuery();

}

}

/// /// 根据主键查询

///

///

///

public UserBase Get(int primaryKey)

{

string sql = "SELECT userid,userNickName FROM cimuser where userid=@userid";

using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))

{

mycn.Open();

MySqlCommand command = new MySqlCommand(sql, mycn);

command.Parameters.AddWithValue("@userid", primaryKey);

MySqlDataReader reader = command.ExecuteReader();

UserBase userBase = null;

if (reader.Read())

{

userBase = new UserBase();

userBase.UserId = Convert.ToInt32(reader["userid"]);

userBase.UserNickName = reader["userNickName"] == DBNull.Value ? null : reader["userNickName"].ToString();

}

return userBase;

}

}

/// /// 查询集合

///

///

public IListGetList()

{

string sql = "SELECT userid,userNickName FROM cimuser limit 1,10";

using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))

{

mycn.Open();

MySqlCommand command = new MySqlCommand(sql, mycn);

MySqlDataReader reader = command.ExecuteReader();

IListlist = new List();

UserBase userBase = null;

while (reader.Read())

{

userBase = new UserBase();

userBase.UserId = Convert.ToInt32(reader["userid"]);

userBase.UserNickName = reader["userNickName"] == DBNull.Value ? null : reader["userNickName"].ToString();

list.Add(userBase);

}

return list;

}

}

}

}

3. ALinq 让我变得如此简单

在Linq 没有现世之前,Ado.net 的数据库操作让我们感觉到编程的痛苦,每天重复着相同的数据库操作代码,后来千奇百怪的代码生成器让我们从中解脱出来,虽然有些代码生成器的确非常不错,但是心中始终觉得那些代码少了一些什么!

Linq TO SQL 推出之后,我们感觉到了.net 语法的甜,是甜到心里的那种甜,感觉自己从代码中彻底释放出来!可是Linq To SQL 只支持微软的 SQL Server 数据库。 Alinq 是如此完美的解决了多类型数据库操作的问题,在操作SQL Server 数据上毫不逊色Linq to SQL,在Mysql,Oracle,Db2 等数据库操作上更甚一筹!

第一: 新建工程

这里使用控制台程序 第二:添加新建项

1405M244C3440-1G61.jpg

第三: 新建数据库连接

1405M244H50-23I7.jpg

第四:添加Mysql数据库连接

1405M244KN10-33162.jpg

第五:选择Mysql 数据源

1405M244O0620-41320.jpg

第六:更改数据源

1405M244S2Q0-5KF.jpg

第七:输入Mysql服务名以及账号和密码

1405M244W0310-61F7.jpg

第八:测试连接

1405M244910940-I419.jpg

第九:连接成功

1405M24494T40-XK4.jpg

上述操作是必须在安装ADO.NET driver for MySQL 组件的情况下才能正常操作,否则第六步选择更改数据源的时候看不到MySql database 选项。

Linq to sql 对于大家来说已经很熟悉了,ALinq 的操作前面的文章也已经详细讲解过了。这里操作不做详细说明了!

4. 中文你让我如何说你

Mysql 数据库开源,更重要的是它能够运行在Linux系统中!在工作中将Sql server 数据库中的数据导入到Mysql 的时候,意想不到的事情发生了,中文在Mysql 中都变成了乱码。而且Mysql 是安装在Linux 系统上的。

Linux 中Mysql解决乱码问题方案以及操作步骤:

1. 查找Mysql 下的.cnf 配置文件

在windows系统中安装mysql程序,其中保存保存数据的配置文件名为 my.ini

此文件存在于mysql安装目录下,使用记事本打开此文件修改内容如下:

将 default-character-set=utf8 (有两处)更改为 default-character-set=GBK 并且添加节点:character_set=gbk

1405M244c21Z-925U.jpg

在Linux中首先查找mysql 的配置文件命令如下:

find -name *.cnf –print 得到如下结果:

1405M245023440-10N00.jpg

2. 将Mysql 中的一个cnf文件复制到etc文件目录下,并且保存为my.cnf

在etc 目录下查找my.cnf 文件,如果此文件不存在则需要从1中查找的文件中my-large.cnf,

My-small.cnf,my-medium.cnf 三个文件中复制一个到etc目录下面,并且保存my.cnf 文件。

使用命令:

cp /usr/share/mysql/my-large.cnf /etc/

mv etc/my-large.cnf etc/my.cnf 文件复制到特定目录,并且重新命名。

3. 修改my.cnf 配置文件

cd etc/ 进入etc目录下

vi my.cnf 使用vi命令打开my.cnf 文件

1405M245056250-11HG.jpg

如果文件中存在此节点,则将编码方式修改为gbk

4. 重新启动服务

/etc/init.d/mysql restart 重新启动mysql 服务

5. 再次导入数据成功

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

debian php mysql 安装_在 Debian 下安装 Apache,MySQL,PHP

我是转载过来的,原地址 http://blog.csdn.net/youngdze/article/details/20455557 ,我安装成功!首先,对你的源进行更新:$ sudo apt-get update第一步--安装 ApacheApache 是一个开源软件,它目前运行在全球超过 50% 的服务器上&…

java ee cdi_Java EE CDI bean范围

java ee cdiJava EE平台的上下文和依赖注入(CDI)是一项功能,有助于将Java EE平台的Web层和事务层绑定在一起。 CDI是一组服务,可以一起使用,使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术。…

airflow mysql_Airflow 使用及原理分析

Airflow 入门及使用什么是 Airflow?Airflow 是一个使用 Python 语言编写的 Data Pipeline 调度和监控工作流的平台。Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具,不需要知道业务数据的具体内容,设置…

wps怎么旋转页面_用WPS文字编辑一份试卷,详细教程来了,老师们赶快收藏吧

​ 试卷是每一个教师接触最多的资料了,很多教师在检测前找一些现成的试卷复印给学生练习,但是,有很多题不适合学生,因此,我们需要自己编辑一份试卷了,编辑试卷也并不是很难的,今天,就…

Java命令行界面(第15部分):Jargo

Jargo在其GitHub主页上定义为“一种减轻程序参数/选项处理的工具”。 当已经存在许多其他命令行处理库时,该页面为另一个命令行处理库提供了基本原理 ,该列表的顶部是“因为类型安全性,不变性和可读性很重要”。 Jargo的选项“定义”阶段使用…

java中序列化与反序列化_Java中的序列化

java中序列化与反序列化Java提供了一种称为序列化的机制,以按字节的有序或字节序列的形式持久化Java对象,其中包括对象的数据以及有关对象的类型和存储在对象中的数据类型的信息。 因此,如果我们已序列化了任何对象,则可以使用对象…

Java命令行界面(第3部分):jbock

在本系列中有关使用Java进行命令行分析的前两篇文章中,我介绍了Apache Commons CLI和args4j库。 在本系列的第三篇文章中,我将介绍jbock ,它是自我描述的“非常简单的CLI解析器”。 我在Java中进行命令行解析的文章使用了一些示例&#xff0…

java collection详解_java 7 collection 详解(一)

一、综述java集合框架定义了几个接口,这些接口决定了collection类的基本特性。不同的是,具体类仅仅是提供了标准接口的不同实现,如图,java集合框架接口图从图可知,java集合类的主要是由两个接口派生而出——Collection…

jsf tree组件_JSF:在传统组件和时尚性能杀手之间进行选择

jsf tree组件这篇博客文章起源于一个大型Web应用程序中的性能问题。 每个人都优化Java代码,但似乎没有人尝试优化JavaScript代码。 奇怪,因为在客户端有很多改进的空间。 我会说,甚至比服务器端还要多。 我们将分析可编辑的JSF标准组件&#…

如何在Java中转义JSON字符串-Eclipse IDE技巧

在Java应用程序中工作或进行JSON解析时,通常很常见的做法是从某些资源(例如RESTful Web服务)中复制粘贴JSON字符串,然后使用Jackson库解析JSON。 这是测试和学习Java中解析JSON字符串的最快方法,但是这种方法的主要问题…

spring javafx_带有Spring的JavaFX 2

spring javafx我将从一个大胆的声明开始:我一直很喜欢Java Swing或applet。 在那里,我说了。 如果我进行一些自我分析,那么这种钦佩可能是在我接触Java时开始的。 Swing(实际上)是我使用Java所做的第一件事&#xff0c…

jframe和mysql登陆_刚写的一个从数据库读取账户和密码进行登陆的小程序~高手请无~...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.*; import javax.swing.*;public class LoginSystem extends JFrame{publi…

mycat mysql 物理部署_一、MyCat的搭建

一、什么是mycat简单直接点就是,MyCat其实就是一个数据库的中间件!一般我们都是app直接到数据库!有了MyCat以后,就是app到MyCat然后再访问数据库。mycat是个中间件,它负责连接管理mysql,应用程序连接mycat,把mycat当作…

Apache Camel中的短重试与长重试

《骆驼设计模式》一书介绍了20种模式以及用于设计基于Apache Camel的集成解决方案的众多技巧和最佳实践。 每个模式都基于真实的用例,并提供了Camel特定的实现细节和最佳实践。 为了让您有这本书的感觉,以下是该书的重试模式摘录,其中介绍了如…

java实现驾校考试系统_jsp驾校考试系统

本驾校考试系统采用了Browser/Server体系结构,JSP(Java Server Page)作为前台开发工具,MySQL作为后台数据库进行开发。最终系统实现的系统将分为管理员和学员两个角色,其中系统管理员部分的主要功能包括修改登录密码、学员信息管理、科目1题目…

java qlv转mp4 代码_怎么将qlv格式转换成mp4?教你快速转换视频格式的技巧

如何将qlv格式转换成mp4?众所周知qlv格式是腾讯视频的下载格式,而qlv格式的特点在于不能用别的播放器打开。如果用腾讯视频以外的播放器打开则需要将qlv格式转换成mp4,那你知道将qlv格式转换成mp4的技巧吗?下面小编教你一种转换qlv格式的技巧…

mysql导入竖杠分割的数据_MYSQL :逗号分隔串表,分解成竖表

DROP TEMPORARY TABLE IF EXISTS Temp_Num ;CREATE TEMPORARY TABLE Temp_Num ( xh INT PRIMARY KEY ); -- 创建数字辅助表SET i 0;INSERT INTO Temp_Num(xh) -- 写入数字辅助表SELECT i : i1FROM AdDataCenter.Ad_Targeting_Mobisage aLIMIT 0, 100 ;SELECT b.AdGroupID , SU…

浙大JAVA实验题12_2019浙大计算机考研机试模拟赛(2)——概念专题

题目链接 引用自晴神OJA - 边覆盖B - 极大独立集C - 稳定婚姻问题D - 笛卡尔树没赶得上全程的比赛,就做了两道,后面两道以后有时间再补。两道都是概念题,比较基础~ 以下是题解A - 边覆盖Case Time Limit: 200 MS (Others) / 400 MS (Java) …

hadoop小型集群_小型Hadoop集群的Ganglia配置和一些故障排除

hadoop小型集群Ganglia是一个针对大型集群的开源,可扩展且分布式的监视系统。 它收集,汇总并提供数十种与计算机相关的指标(例如CPU,内存,存储,网络使用情况)的时序视图。 您可以在UC Berkeley …

spring aop组件_安全性中的Spring AOP –通过方面控制UI组件的创建

spring aop组件以下文章将显示在我参与的一个项目中,我们如何使用Spring的AOP来介绍一些与安全性相关的功能。 这样的概念是,为了使用户能够看到某些UI组件,他需要具有一定级别的安全特权。 如果不满足该要求,则不会显示UICompone…