C#连接MySql和Sql数据库
在学习了C#与数据库访问技术总结(七)综合示例后,尝试用连接MySql和使用ODBC。使用到的工具:navicat.exe--->用来创建MySql数据库Microsoft SQL Server Management Studio--->用来创建Sql数据库1> 连接MySql with net mode如果连接的是Mysql数据库,需要引用MySql.
在学习了C#与数据库访问技术总结(七)综合示例后,尝试用连接MySql和使用ODBC。
1> 使用到的工具
在操作数据库之前,首先需要建立数据库,并创建表。
navicat.exe--->用来管理MySql数据库
Microsoft SQL Server Management Studio--->用来管理Sql数据库
用上面的工具分别为MySql和Sql创建数据库Student和StudentInfo表。表中的内容比较简单,如下
2> 连接MySql with net mode
如果连接的是Mysql数据库,需要引用MySql.Data.dll文件,该文件在MySQL Connector中。参考网址:http://blog.csdn.net/koastal/article/details/52456785。有两种方式使用MySql,Connector/ODBC和Connector/Net。网址中使用的是Net方式。目前在连接MySql过程中貌似必须使用用户名和密码。还不能像C#与数据库访问技术总结(七)综合示例中连接SQL中使用SSPI,即windows用户登录。
3> 连接Mysql with ODBC Unicode
通过网址https://dev.mysql.com/downloads/connector/odbc/下载。参考网址http://www.cnblogs.com/joe-yang/archive/2008/10/23/1318264.html进行配置。本次选择ODBCUnicodedriver。
打开控制面板->管理工具-> ODBC 数据源(32 位),做如下配置。记住下图红框中MySQL ODBC5.3 Unicode Driver,后面程序中的Driver要赋成此值。
点击Test会弹出连接成功标志。
注意:此时数据库名如果用Initial Catalog来引导,会出现如下错误,使用database解决。
问题:
mysql-connector-odbc有32位,64位,应该选择安装哪个?
我一开始以为电脑是64位系统,因此就装了一个64位的,配置好ODBC后,连接出现如下错误:
“未发现数据源名称并且未指定默认驱动程序”。
在C:\Windows目录下有两个文件ODBC.INI和ODBCINST.INI,内部显示的ODBC是32位,后搜索在网址http://tieba.baidu.com/p/3243507049获得答案。
通过查看C:\Windows\SysWOW64下odbcad32.exe,发现是32位的。随将64位ODBC卸载,安装32位ODBC,重新配置,连接成功。
4> 连接SQL数据库
直接看后面代码
5> 连接SQL with ODBC
添加ODBC驱动参照2中的方法添加。
按照网址配置http://blog.csdn.net/a_sungirl/article/details/17962943,其中服务器可以写成localhost,更改默认的数据库为student。
新建用户的属性设置参考下图。
6> 代码如下
窗体上的控件布局如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
using System.Data.Odbc;
namespace studentDataBase
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnMysqlWithNet_Click(object sender, EventArgs e)
{
try
{
string commandText = "select count(*) from studentInfo";
string connString = "server=localhost;Initial Catalog=Student;Uid=MySqlTest;pwd=123456";
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = connString;
MySqlCommand cmd = new MySqlCommand(commandText, conn);
conn.Open();
string count = cmd.ExecuteScalar().ToString();
conn.Close();
this.label1.Text = "MySql with net 连接成功,共有" + count + "位学生";
}
catch (Exception ex)
{
MessageBox.Show("MySql数据库连接失败"+ ex.Message);
}
}
private void btnMySqlWithODBC_Click(object sender, EventArgs e)
{
try
{
string commandText = "select count(*) from studentInfo";
string connString = "Driver={MySQL ODBC 5.3 Unicode Driver};server=localhost;Database=Student;Uid=MySqlTest;pwd=123456";
OdbcConnection conn = new OdbcConnection(connString);
OdbcCommand cmd = new OdbcCommand(commandText, conn);
conn.Open();
string count = cmd.ExecuteScalar().ToString();
conn.Close();
this.label1.Text = "MySql with odbc 连接成功,共有" + count + "位学生";
}
catch (Exception ex)
{
MessageBox.Show("MySql数据库连接失败" + ex.Message);
}
}
private void btnSql_Click(object sender, EventArgs e)
{
try
{
string commandText = "select count(*) from studentInfo";
string connString = "server=(local);Initial Catalog=Student;Integrated Security=SSPI;";
SqlConnection conn = new SqlConnection();
conn.ConnectionString = connString;
SqlCommand cmd = new SqlCommand(commandText, conn);
conn.Open();
string count = cmd.ExecuteScalar().ToString();
conn.Close();
this.label1.Text = "Sql with net 连接成功,共有" + count + "位学生";
}
catch (Exception ex)
{
MessageBox.Show("Sql数据库连接失败" + ex.Message);
}
}
private void btnSqlODBC_Click(object sender, EventArgs e)
{
try
{
string commandText = "select count(*) from studentInfo";
string connString = "Driver={ODBC Driver 13 for SQL Server};server=localhost;Database=Student;Uid=MySqlTest;pwd=123456";
// string connString = "Driver={ODBC Driver 13 for SQL Server};server=(local);Initial Catalog=Student;Integrated Security=SSPI;";
OdbcConnection conn = new OdbcConnection(connString);
OdbcCommand cmd = new OdbcCommand(commandText, conn);
conn.Open();
string count = cmd.ExecuteScalar().ToString();
conn.Close();
this.label1.Text = "Sql with odbc 连接成功,共有" + count + "位学生";
}
catch (Exception ex)
{
MessageBox.Show("Sql数据库连接失败" + ex.Message);
}
}
}
}
7> 后续
1> 在整个过程中,会出现许多问题,虽然可以连接到Mysql和Sql数据库了。但是<SQL Server 2016 配置管理器>打开依然会报下面的错误。
过程中曾经解决了"MMC无法创建管理单元"但和下图CLSID不一样的一个问题,但是卸载了电脑上的sql2012,2014中的程序后,就有出错了。
2> 还有就是用ODBC连接Sql时必须是用户名和密码登录,不能使用windows自动登录。
3> Mysql连接时貌似用windows登录一致不行。
更多推荐
所有评论(0)