c# -- mysql中的读取数据的几个方法

1)ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进行操作(如记录的增加、删除和更新),那么方法将返回操作所影响的记录条数。

下面为详细的解释运用:

命令对象的ExecuteNonQuery()方法用于执行任何不从数据库返回结果集的SQL操作命令,包括INSERT INTO、UPDATE、DELETE语句、没有返回数值的存储过程、CREATE TABLE和CREATEINDEX之类的DDL语句。ExecuteNonQuery方法还可用来执行目录操作,例如查询数据库的结构或创建诸如表等的数据库对象。ExecuteNonQuery方法对于UPDATE、INSERT INTO和DELETE这些操作语句,其返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为-1。
假设cmd为SQL SERVER数据提供者的命令对象(即SqlCommand),cn为连接对象(保持打开状态),调用ExecuteNonQuery方法如以下代码所示。
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
//设置cmd的命令文本,本例为删除Table1表中id字段值大于1的记录
cmd.CommandText = “DELETE FROM Table1 WHERE [id]>1”;
int count = cmd.ExecuteNonQuery();
以上代码中,创建了SqlCommand类型的命令对象cmd,设置其连接为连接对象cn,SQL命令文本为某个SQL语句(一般为增、删、改命令)。执行ExecuteNonQuery方法后,命令文本即通过连接对象作用到数据库中,其返回值count则为数据库中受到影响的数据记录数量。

 

(2)ExecuteScalar():执行命令对象的SQL语句,如果SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略其他的行和列。该方法所返回的结果为object类型,在使用之前必须强制转换为所需的类型。如果SQL语句不是SELECT查询,则返回结果没有任何作用。

下面为详细的方法的解释运用等:

命令对象的ExecuteScalar()方法由于只能返回数据集的第1行第1列,所以常被用于执行聚合函数。假设cmd为SQL SERVER数据提供者的命令对象(即SqlCommand),cn为连接对象(保持打开状态),调用ExecuteScalar方法如以下代码所示。
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
//设置cmd的命令文本,本例为查询Table1表中记录的数量
cmd.CommandText = “SELECT COUNT(*) FROM Table1”;
int count = (int)cmd.ExecuteScalar();
以上代码中,创建了SqlCommand类型的命令对象cmd,设置其连接为连接对象cn,SQL命令文本为某个SQL语句。由于返回值为object类型,所以需要进行强制转换,count变量即存储了所需数据表中记录的数量。

 

 

(3)ExecuteReader():我们通常在asp中用Recordset对象来从数据库中读出数据,并且用循环语句来一个一个的读出数据,但在我们的ADO.NET中,我们就是DataReader 对象的ExecuteReader()方法来进行数据的列出,并且我们用这个ExecuteReader()方法来显示数据是最快的一种方法,因为当我们在用ExecuteReader()方法中的DataReader 对象来进行数据的在网站建设中显示时,他只可以一条一条向前读,不能返回,也就是像ASP中的ADO方法中的Recordset 对象的Movenext一样,他没有move -1这样的返回方法。

说明:如果没有数据可操作,那么只能使用调用命令对象的ExecuteReader方法,返回一个数据读取器(DataReader对象)。因为 ExecuteNonQuery()与ExecuteScalar()在没有数据的时候调用时,就会出现“对象没有实例化”的错误。所以在判断是否有数据时,应该调用数据读取器的Read()方法来检测。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
将 Excel 数据导入到 MySQL 数据库可以分为以下几个步骤: 1.读取 Excel 数据 可以使用 C# 的 OLEDB 或者 EPPlus 库来读取 Excel 数据。其 OLEDB 是基于 COM 的组件,可以读取 Excel 2003 以前的版本,而 EPPlus 是基于 Open XML 标准的库,可以读取 Excel 2007 及以后的版本。 2.连接 MySQL 数据库 使用 MySQL 数据库提供的 .NET Connector 组件来连接 MySQL 数据库。 3.创建表格 在 MySQL 数据库创建表格,确保表格的字段与 Excel 数据的字段匹配。 4.插入数据 将读取到的 Excel 数据插入到 MySQL 数据库对应的表格。 以下是示例代码: ```csharp using System.Data; using System.Data.OleDb; using MySql.Data.MySqlClient; using OfficeOpenXml; public void ImportDataFromExcelToMySQL(string excelFilePath, string mysqlConnectionString) { // 读取 Excel 数据 DataTable excelData = ReadExcelData(excelFilePath); // 连接 MySQL 数据库 MySqlConnection mysqlConnection = new MySqlConnection(mysqlConnectionString); mysqlConnection.Open(); // 创建表格 CreateTable(mysqlConnection); // 插入数据 InsertData(mysqlConnection, excelData); // 关闭连接 mysqlConnection.Close(); } private DataTable ReadExcelData(string excelFilePath) { // 使用 OLEDB 读取 Excel 2003 以前的版本 string excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFilePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"; using (OleDbConnection excelConnection = new OleDbConnection(excelConnectionString)) { excelConnection.Open(); OleDbDataAdapter excelDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excelConnection); DataTable excelData = new DataTable(); excelDataAdapter.Fill(excelData); return excelData; } // 使用 EPPlus 读取 Excel 2007 及以后的版本 // using (ExcelPackage excelPackage = new ExcelPackage(new FileInfo(excelFilePath))) // { // ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets["Sheet1"]; // DataTable excelData = worksheet.ConvertSheetToDataTable(); // return excelData; // } } private void CreateTable(MySqlConnection mysqlConnection) { MySqlCommand createTableCommand = new MySqlCommand("CREATE TABLE IF NOT EXISTS `table_name` (`column1` VARCHAR(50), `column2` VARCHAR(50), `column3` INT)", mysqlConnection); createTableCommand.ExecuteNonQuery(); } private void InsertData(MySqlConnection mysqlConnection, DataTable excelData) { foreach (DataRow row in excelData.Rows) { MySqlCommand insertCommand = new MySqlCommand("INSERT INTO `table_name` (`column1`, `column2`, `column3`) VALUES (@column1, @column2, @column3)", mysqlConnection); insertCommand.Parameters.AddWithValue("@column1", row["column1"].ToString()); insertCommand.Parameters.AddWithValue("@column2", row["column2"].ToString()); insertCommand.Parameters.AddWithValue("@column3", int.Parse(row["column3"].ToString())); insertCommand.ExecuteNonQuery(); } } ``` 其,`excelFilePath` 为 Excel 文件的路径,`mysqlConnectionString` 为 MySQL 数据库的连接字符串。在 `ReadExcelData` 方法,使用了 OLEDB 来读取 Excel 数据,读取的表格名为 `Sheet1`,如果需要读取其他的表格,可以修改查询语句。在 `CreateTable` 方法,创建了一个名为 `table_name` 的表格,其包含三个字段,可以根据自己的需要修改字段名和类型。在 `InsertData` 方法,使用了参数化查询来插入数据,确保数据的安全性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值