MySQL 数据库在Asp.net中的应用
2012-06-01 17:34
295 查看
长期以来一直使用的是微软的SQL Server, 从当年的2000到如今的2008, 一直听说MySQL比较火,免费,MySQL + PHP建站乃黄金组合,最近花了点时间研究了一下MySQL数据库,这里记录一点心得。
首先是安装了,在windows环境下,直接到MySQL官网下载 MySQL Installer 一次性从数据库,到可视化工具,再到asp.net驱动全搞定!
它自带的可视化工具是Oracle出的 MySQL WorkBench,界面比较简单,但跟用习惯了的 SQL ServerManagement Studio相比,还是有很大的不同,这里,数据库不叫Database而叫Schema, 存储过程不叫Store Procedure而叫Routine,不过总体还是比较简单的。
下一步就是尝试各种语法了,总体跟SQL Server差别不大,值得注意的是,跟SQLite一样,MySQL的语句也是以分号;结束的,另外执行存储过程用call关键字,且参数必须用括号括起来,比较像程序中方法的调用。
例如: call GetCustomerById (2)
然后是Code操作数据库,这个也比较简单,主要就是引用MySQL.Data程序集,这个在上面安装MySQL Installer时已经安装好了,可以通过程序添加引用从.NET下找到,也可以去安装目录把这个dll拷到程序里面用起来更方便,其位置在MySQL安装目录下的 \MySQL\Connector NET 6.5.4\Assemblies\下。
在代码里引入命名空间MySql.Data.MySqlClient,调用比较简单,参考以下code:
View Code using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace SQLiteConsoleApp
{
// For MySQL
class Program_ForMySql
{
static void Main(string[] args)
{
MySqlConnection conn = new MySqlConnection("server=localhost;user id=root;password=abcd1234**##;database=chytest");
MySqlCommand cmd = new MySqlCommand("SELECT * FROM Customer", conn);
MySqlCommand cmd2 = new MySqlCommand(@"insert into Customer (UserName, PassWord, Gender, Address, Telephone) values
('Tom', '111', 'M', 'ShangHai', '4558556')", conn);
conn.Open();
// insert new data
//Console.WriteLine("------------insert new data---------------------------");
//cmd2.ExecuteNonQuery();
// use reader to read the data
Console.WriteLine("");
Console.WriteLine("------------use reader to read the data---------------------------");
var reader = cmd.ExecuteReader();
while (reader.Read())
{
if (reader.HasRows)
{
Console.WriteLine(reader["CustomerId"].ToString() + "~" +
reader["UserName"].ToString() + "~" +
reader["PassWord"].ToString() + "~" +
reader["Gender"].ToString() + "~" +
reader["Address"].ToString() + "~" +
reader["Telephone"].ToString());
}
}
reader.Close();
// use adapter to read data into datatable
Console.WriteLine("");
Console.WriteLine("------------use adapter to read data into datatable----------------------------");
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable("tbl1");
adapter.Fill(dt);
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(row[0].ToString() + "^" + row[1].ToString());
}
}
// Call store procedure
Console.WriteLine("");
Console.WriteLine("----------------Call Store Procedure-------------------------------------");
MySqlCommand cmd3 = new MySqlCommand("GetCustomerById", conn);
cmd3.CommandType = CommandType.StoredProcedure;
MySqlParameter mparam = new MySqlParameter("@custId", MySqlDbType.Int32); //here ?custId and custId also works
mparam.Value = 2;
mparam.Direction = ParameterDirection.Input;
cmd3.Parameters.Add(mparam);
var reader2 = cmd3.ExecuteReader();
while (reader2.Read())
{
if (reader2.HasRows)
{
Console.WriteLine(reader2["CustomerId"].ToString() + "~" +
reader2["UserName"].ToString() + "~" +
reader2["PassWord"].ToString() + "~" +
reader2["Gender"].ToString() + "~" +
reader2["Address"].ToString() + "~" +
reader2["Telephone"].ToString());
}
}
reader.Close();
conn.Close();
Console.ReadLine();
}
}
} 有一点值得注意,在调用存储过程时,对于参数名, SQL Server是以@符号打头, MySQL除了支持@符号外,还支持问号?,不用任何符号打头也可以。
首先是安装了,在windows环境下,直接到MySQL官网下载 MySQL Installer 一次性从数据库,到可视化工具,再到asp.net驱动全搞定!
它自带的可视化工具是Oracle出的 MySQL WorkBench,界面比较简单,但跟用习惯了的 SQL ServerManagement Studio相比,还是有很大的不同,这里,数据库不叫Database而叫Schema, 存储过程不叫Store Procedure而叫Routine,不过总体还是比较简单的。
下一步就是尝试各种语法了,总体跟SQL Server差别不大,值得注意的是,跟SQLite一样,MySQL的语句也是以分号;结束的,另外执行存储过程用call关键字,且参数必须用括号括起来,比较像程序中方法的调用。
例如: call GetCustomerById (2)
然后是Code操作数据库,这个也比较简单,主要就是引用MySQL.Data程序集,这个在上面安装MySQL Installer时已经安装好了,可以通过程序添加引用从.NET下找到,也可以去安装目录把这个dll拷到程序里面用起来更方便,其位置在MySQL安装目录下的 \MySQL\Connector NET 6.5.4\Assemblies\下。
在代码里引入命名空间MySql.Data.MySqlClient,调用比较简单,参考以下code:
View Code using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace SQLiteConsoleApp
{
// For MySQL
class Program_ForMySql
{
static void Main(string[] args)
{
MySqlConnection conn = new MySqlConnection("server=localhost;user id=root;password=abcd1234**##;database=chytest");
MySqlCommand cmd = new MySqlCommand("SELECT * FROM Customer", conn);
MySqlCommand cmd2 = new MySqlCommand(@"insert into Customer (UserName, PassWord, Gender, Address, Telephone) values
('Tom', '111', 'M', 'ShangHai', '4558556')", conn);
conn.Open();
// insert new data
//Console.WriteLine("------------insert new data---------------------------");
//cmd2.ExecuteNonQuery();
// use reader to read the data
Console.WriteLine("");
Console.WriteLine("------------use reader to read the data---------------------------");
var reader = cmd.ExecuteReader();
while (reader.Read())
{
if (reader.HasRows)
{
Console.WriteLine(reader["CustomerId"].ToString() + "~" +
reader["UserName"].ToString() + "~" +
reader["PassWord"].ToString() + "~" +
reader["Gender"].ToString() + "~" +
reader["Address"].ToString() + "~" +
reader["Telephone"].ToString());
}
}
reader.Close();
// use adapter to read data into datatable
Console.WriteLine("");
Console.WriteLine("------------use adapter to read data into datatable----------------------------");
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable("tbl1");
adapter.Fill(dt);
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(row[0].ToString() + "^" + row[1].ToString());
}
}
// Call store procedure
Console.WriteLine("");
Console.WriteLine("----------------Call Store Procedure-------------------------------------");
MySqlCommand cmd3 = new MySqlCommand("GetCustomerById", conn);
cmd3.CommandType = CommandType.StoredProcedure;
MySqlParameter mparam = new MySqlParameter("@custId", MySqlDbType.Int32); //here ?custId and custId also works
mparam.Value = 2;
mparam.Direction = ParameterDirection.Input;
cmd3.Parameters.Add(mparam);
var reader2 = cmd3.ExecuteReader();
while (reader2.Read())
{
if (reader2.HasRows)
{
Console.WriteLine(reader2["CustomerId"].ToString() + "~" +
reader2["UserName"].ToString() + "~" +
reader2["PassWord"].ToString() + "~" +
reader2["Gender"].ToString() + "~" +
reader2["Address"].ToString() + "~" +
reader2["Telephone"].ToString());
}
}
reader.Close();
conn.Close();
Console.ReadLine();
}
}
} 有一点值得注意,在调用存储过程时,对于参数名, SQL Server是以@符号打头, MySQL除了支持@符号外,还支持问号?,不用任何符号打头也可以。
相关文章推荐
- Asp.net MVC + MySQl + EF Code First 不能自动生成数据库
- asp.net下SQLite(轻量级最佳数据库) 原理分析和开发应用
- ASP.NET数据库应用指南
- ASP.NET缓存Cache的应用-提高数据库读取速度
- ASP.NET连接mysql 数据库实例
- 自己封装的ASP.NET的MYSQL的数据库操作类
- 一个ASP.NET的MYSQL的数据库操作类自己封装的
- Visual Studio Code和Docker开发asp.net core和mysql应用
- ASP.NET里的事务处理(ado.net 数据库应用)
- 【Asp.net】关于数据库的应用
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
- 应用Jquery在asp.net中实现输入提示,数据来自数据库
- ASP.NET缓存Cache的应用-提高数据库读取速度
- ASP.NET应用中对数据库的配置
- 一个ASP.NET的MYSQL的数据库操作类自己封装的
- ASP.NET里的事务处理(ado.net 数据库应用)
- [转]ASP.NET 2.0如何实现数据库应用开发
- ASP.NET 连接MySql 数据库
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
- asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库