丛林战争项目十之数据库查询

本文介绍如何使用C#连接MySQL数据库并执行单条和多条记录的查询操作,提供了详细的代码示例及常见错误处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.点击MySqlOperation,点击鼠标右键,设置为启动项目


2.查询一条记录

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace MySqlOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            //Database指定数据库,Data Source指定本机ip,port指定端口号,user id指定用户名,password 指定密码,各属性之间用“;”进行分隔
            String connStr = "Database=test_connection;Data Source=127.0.0.1;port=3306;User Id=root;Password=123456";
            //建立连接,参数为连接的字符串,即ip地址、端口号、账号、密码
            MySqlConnection conn = new MySqlConnection(connStr);
            //打开连接
            conn.Open();

            //用于执行sql命令,第一个参数为一条sql语句,第二个参数为连接
            //查询一条id为1的用户信息
            MySqlCommand cmd = new MySqlCommand("select * from user where id = 1",conn);
            //执行查询,可以处理0到多条查询语句
            MySqlDataReader reader = cmd.ExecuteReader();

            if (reader.HasRows)                                                             //判断结果中是否有内容
            {
                reader.Read();
                String userName = reader.GetString("userName");
                String passWord = reader.GetString("passWord");
                Console.WriteLine(userName+"        :            "+passWord);
            }


            //关闭连接,先开后关
            reader.Close();                                                                 //关闭流
            conn.Close();                                                                   //关闭连接
            Console.ReadKey();                                                              //让程序暂停

        }
    }
}





运行结果:


3.查询多条记录

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace MySqlOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            //Database指定数据库,Data Source指定本机ip,port指定端口号,user id指定用户名,password 指定密码,各属性之间用“;”进行分隔
            String connStr = "Database=test_connection;Data Source=127.0.0.1;port=3306;User Id=root;Password=123456";
            //建立连接,参数为连接的字符串,即ip地址、端口号、账号、密码
            MySqlConnection conn = new MySqlConnection(connStr);
            //打开连接
            conn.Open();

            //用于执行sql命令,第一个参数为一条sql语句,第二个参数为连接
            //查询一条id为1的用户信息
            MySqlCommand cmd = new MySqlCommand("select * from user",conn);
            //执行查询,可以处理0到多条查询语句
            MySqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())                                                             //判断结果中是否有内容
            {
                String userName = reader.GetString("userName");
                String passWord = reader.GetString("passWord");
                Console.WriteLine(userName+"        :            "+passWord);
            }


            //关闭连接,先开后关
            reader.Close();                                                                 //关闭流
            conn.Close();                                                                   //关闭连接
            Console.ReadKey();                                                              //让程序暂停

        }
    }
}



运行结果:





注:

出现的异常:"MySql.Data.MySqlClient.MySQLeXCEPTION"类型的未经处理的异常在MySql.Data.dll中发生

“MySql.Data.MySqlClient.MySqlException”类型的未经处理的异常在 MySql.Data.dll 中发生 
Invalid attempt to access a field before calling Read()


原因:

1.MySql服务可能没有启动

2.没有调用reader.read()方法


解决办法:1.mysql服务如果没有启动,则启动

2.如果没有调用reader.read()方法,则调用

原来的代码:

if (reader.HasRows)                                                             //判断结果中是否有内容
            {
                String userName = reader.GetString("userName");
                String passWord = reader.GetString("passWord");
                Console.WriteLine(userName+"        :            "+passWord);
            }
修改后的代码:

 if (reader.HasRows)                                                             //判断结果中是否有内容
            {
                reader.Read();
                String userName = reader.GetString("userName");
                String passWord = reader.GetString("passWord");
                Console.WriteLine(userName+"        :            "+passWord);
            }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值