本文共 3737 字,大约阅读时间需要 12 分钟。
#region 远程数据库连接测试 //需给远程数据库分配所有权限 // cmd命令: grant all privileges on *.* to 'root'@'%' with grant option; string connStr = "Database=MyDataBase;Data Source=" + "192.168.2.206" + ";port=3306;User Id=root;Password=root;"; MySqlConnection conn = new MySqlConnection(connStr); MySqlCommand cmd = new MySqlCommand("select * from MyTable", conn); //执行命令--读取数据 MySqlDataReader reader = cmd.ExecuteReader(); DataTable dt = new DataTable(); if (reader.HasRows) { //读取MySqlDataReader里的内容 } cmd.Dispose(); conn.Dispose(); return; #endregion
//************************
1、导入命名空间
using System.Data.SqlClient; //连接SQLServer 数据库专用2、创建连接
SqlConnection lo_conn = New SqlConnection("Server=服务器名字或IP;Database=数据库名字;uid=用户名;pwd=密码");3、打开连接,第2步并没有真正连接数据库
lo_conn.Open(); //真正与数据库连接4、向数据库发送SQL命令要使用SqlCommand:
SqlCommand lo_cmd = new SqlCommand(); //创建命令对象 lo_cmd.CommandText = "这里是SQL语句"; //写SQL语句 lo_cmd.Connection = lo_con; //指定连接对象,即上面创建的5、处理SQL命令或返回结果集
lo_cmd.ExecuteNonQuery(); //这个仅仅执行SQL命令,不返回结果集,实用于建表、批量更新等不需要返回结果的操作。 SqlDataReader lo_reader = lo_cmd.ExecuteReader();//返回结果集6、以数据集的方式反回结果集
SqlDataAdapter dbAdapter = new SqlDataAdapter(lo_cmd); //注意与上面的区分开 DataSet ds = new DataSet(); //创建数据集对象 dbAdapter.Fill(ds); //用返回的结果集填充数据集,这个数据集可以被能操作数据的控件DataBind,其它的就自己发挥了吧7、关闭连接
lo_conn.Close();//**********************************
C#连接云数据库
1.宝塔面板放行数据库默认3306端口:2.设置数据库权限-所有人或者指定ip,指定ip需要你本机的ip:
3.操作C#写方法下的连接语句:
连接前导入引用:MySql.Data.dll (顶部有下载链接),不知道怎么导入,可以去我的另一篇博客 在顶部using一下:using MySql.Data.MySqlClient;代码如下:
using System;
using MySql.Data.MySqlClient; namespace ConsoleApp1 { class Program { static void Main(string[] args) {String connetStr = "server=服务器主机ip;port=3306;user=数据库用户名;password=密码;database=数据库名;";
MySqlConnection conn = new MySqlConnection(connetStr); try { conn.Open();//打开通道,建立连接 Console.WriteLine("连接成功!");//在这里使用代码对数据库进行增删查改
Console.ReadKey(); //让程序运行得到结果不终止 } catch (MySqlException ex) {Console.WriteLine(ex.Message); //有异常,打印错误信息到控制台
} finally { conn.Close(); } } } }//**************远程连接问题解决
【现象说明】
C/S程序远程访问正常,本地访问报以下异常
MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Access denied for user 'root'@'localhost' (using password: YES)
配置文件如下:<add name="RemoteConnString" connectionString="Database='mealbooker';Data Source='localhost';User Id='root';Password='123456';charset='gb2312';pooling=true" providerName="MySql.Data.MySqlClient"/>
【分析】
权限问题吧,查看下mysql数据库中的user表 发现localhost下面值为空,于是connection string中的localhost 改为 127.0.0.1,测试通过~~~ 【解决】 配置文件中改为localhost,访问数据库正常;同时mysql command line工具输入密码后一闪而过问题同时解决。重启之后又访问不了,继续上面的思路修改:
另,mysql command line工具一闪而过,方法参见这里
另一个权限相关问题:Error Code: 1370 execute command denied to user 'root'@'localhost' for routine
使用grant execute on procedure/function dbname.fname TO 'root'@'localhost';
另一密码相关问题(调试机放几天后就没法远程访问了,root密码被改动,不明原因):
Authentication to host '10.10.123.6' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'10.10.123.5' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Access denied for user 'root'@'10.10.123.5' (using password: YES)
修改password语句如下: 然后还要给远程用户非配权限grant all privileges on *.* to 'root'@'%' with grant option;
转载地址:http://ejlws.baihongyu.com/