草庐IT

C#与Mysql数据库交互-Mysql配置及增删查改操作

Miracle Fan 2023-04-08 原文

c#与Mysql交互


文章目录


1. 配置dll文件

2.下载Mysql及图形化辅助界面

本篇博客使用的是phpmyadmin图形化管理工具,利用已经建立好的phpstudy管理工具进行按照。

2.1phpstudy下载

小皮面板(phpstudy)

2.2下载apache和mysql

2.3下载mysql管理工具

2.4启用服务

2.5 phpmyadmin基本操作

2. 引入命名空间

using MySql.Data.MySqlClient;

3.创建相应静态字段

类名Description
MySqlConnection数据库连接类
MySqlCommand对数据库进行执行语句的类
MySqlDataReader提供一种从MySQL数据库单向读取的方法
private static MySqlConnection conn;
private static MySqlCommand cmd;
private static MySqlDataReader reader;

4.MySqlConnection-连接和关闭数据库

4.1连接数据库

MySqlConnection(server,database,user,password)
ParameterDescription
server服务器地址-ip,本地使用localhost就可以
database对应数据库
user进入数据库账号名
password进入数据库密码
charset可选,指定字符编码,遇到中文乱码可能需要修改

conn = new MySqlConnection(connstr);

通过这条语句只是实例化了一个MySqlConnection对象,还需要通过conn.open()进行数据库的连接。

 static void ContoSQL()
        {           
            string connstr = "server=localhost;database=user;user=root;password=root;charset = uft8";
            conn = new MySqlConnection(connstr);
            conn.Open();    //建立连接,打开数据库
            Console.WriteLine("打开数据库成功");
        }

4.2 关闭连接,释放资源

关闭与数据库的连接,但不清理缓存

conn.close();
conn.Dispose()

4.3 其他常见属性

具体详见MySqlConnection Methods

属性描述
ServerVersionsermysql服务器版本
State连接状态
 static void ContoSQL()
        {           
            string connectStr = "server=localhost;database=user;user=root;password=root;";
            conn = new MySqlConnection(connectStr);
            conn.Open();    //建立连接,打开数据库
            Console.WriteLine("ServerVersion: " + conn.ServerVersionser +
"\nState: " + conn.State.ToString());
            conn.Close();

        }

5 数据的增删查改

cmd = new MySqlCommand(sql, conn);//利用sql语句和一个连接对象实例化MysqlDataCommand对象
cmd.ExecuteNonQuery();//执行SQL语句,并返回受影响的行数。一般用在增删改里面
reader=cmd.ExecuteReader();//执行查询语句并将信息传给MysqlDataReader类

5.1 数据插入

string sql="insert into test(字段名1,字段名2) values('22','ChenChen')";   
string sql = "insert into test(username,F1) values('22','ChenChen')";   
 static void InsertSQL(string sql)
        {
            try
            {
                ContoSQL();             
                cmd = new MySqlCommand(sql, conn);
				cmd.ExecuteNonQuery(); //执行sql语句
            }
            catch (Exception ex)//如执行出错执行内部语句,执行完后关闭连接
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }

5.2 数据更新

string sql = "update 数据表名 set 字段名 = 'FaFa' where 字段名 = '2002' ";   
string sql = "update test set F1 = 'FaFa' where username = '2002' ";   
static void UpdateSQL(string sql)
        {          
            try
            {
                ContoSQL();  //建立连接             
                cmd = new MySqlCommand(sql, conn);
				cmd.ExecuteNonQuery();   //执行sql语句

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }

5.3 数据删除

string sql = "Delete from test where username = '22' "; 
 static void DeleteSQL(string sql)
        {      
            try
            {
                ContoSQL();             
                cmd = new MySqlCommand(sql, conn);
				cmd.ExecuteNonQuery();   
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();  
            }

5.4 数据查询

1.几种常见查询语句用法

string sql ="select * from 数据表名 "
string sql = "select * from test";//读取所有行
string sql = "select* from test where username = '2002'"; //读取指定行
string sql = "select* from test where 密码='2'and username=2002";//多个限制条件
string sql = "select username,密码,F1 from test where 密码='2'and username=2002"; //读取指定列
  1. 获取reader数据的方法
方法说明
reader["字段名"]关联数组,通过字段名获取数据返回object类型,需通过.Tostring()转换
reader[num]索引数组,通过读取字段对应的排序,从0开始
reader.GetString("字段名/num")同上作用

更多资料请见MySqlDataReader Class

Console.WriteLine(reader["username"].ToString() +' '+ reader["密码"].ToString()+' '+ reader["F1"].ToString());
Console.WriteLine(reader[0].ToString() +' '+ reader[1].ToString()+' '+ reader[2].ToString());
static void ReadSQL(string sql)
        {
            try
            {
                ContoSQL();
                cmd = new MySqlCommand(sql, conn);
                reader = cmd.ExecuteReader();
                while (reader.Read())   逐行读取数据,当下一行没有数据返回false
                {
                    Console.WriteLine(reader["username"].ToString() +' '+ reader["F1"].ToString()+' '+reader["F2"]);                 
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }

6.增删查改示例

 		using MySql.Data.MySqlClient;//引用命名空间,添加到首行
		private static MySqlConnection conn;
        private static MySqlCommand cmd;
        private static MySqlDataReader reader;


        static void ContoSQL()
        {           
            string connectStr = "server=localhost;database=user;user=root;password=root;";
            conn = new MySqlConnection(connectStr);
            conn.Open();    //建立连接,打开数据库
            Console.WriteLine("打开数据库成功");
        }
        /// <summary>
        /// 读取数据库数据
        /// </summary>
        /// <param name="sql">执行的sql语句</param>

        static void ReadSQL(string sql)
        {
            try
            {
                 ContoSQL();
                 cmd = new MySqlCommand(sql, conn);
                 reader = cmd.ExecuteReader();

                while (reader.Read())   //遍历表中数据
                {
                    Console.WriteLine(reader[0].ToString() +' '+ reader["密码"].ToString()+' '+ reader["F1"].ToString());
             
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }
        static void InsertSQL(string sql)
        {
            try
            {
                ContoSQL();                     
                cmd = new MySqlCommand(sql, conn);
				cmd.ExecuteNonQuery();  

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }
        static void UpdateSQL(string sql)
        {
            
            try
            {
                ContoSQL();               
                cmd = new MySqlCommand(sql, conn);
                result = cmd.ExecuteNonQuery();

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }
        static void DeleteSQL(string sql)
        {
            
            try
            {
                ContoSQL();              
                cmd = new MySqlCommand(sql, conn);
                cmd.ExecuteNonQuery();  
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }
        static void Main(string[] args)
        {
            string sql = "select username,密码,F1 from test where 密码='2'and username=2002";             
            ReadSQL(sql);
            sql = "select * from test";
            ReadSQL(sql);        
        }

有关C#与Mysql数据库交互-Mysql配置及增删查改操作的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  3. ruby-on-rails - 如何在 ruby​​ 交互式 shell 中有多行? - 2

    这可能是个愚蠢的问题。但是,我是一个新手......你怎么能在交互式ruby​​shell中有多行代码?好像你只能有一条长线。按回车键运行代码。无论如何我可以在不运行代码的情况下跳到下一行吗?再次抱歉,如果这是一个愚蠢的问题。谢谢。 最佳答案 这是一个例子:2.1.2:053>a=1=>12.1.2:054>b=2=>22.1.2:055>a+b=>32.1.2:056>ifa>b#Thecode‘if..."startsthedefinitionoftheconditionalstatement.2.1.2:057?>puts"f

  4. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  5. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  6. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  7. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  8. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  9. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  10. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

随机推荐