栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.net mysql操作类

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.net mysql操作类

答:SqlConnection连接、SqlCommand操作、SqlDataReader读取、DataSet数据管理、

SqlDataAdapter数据适配

SqlConnection对象

要与数据库进行交互,您必须与其建立连接。该连接有助于识别数据库服务器,数据库名称,用户名,密码以及连接到数据库所需的其他参数。命令对象使用连接对象,因此它们将知道要在哪个数据库上执行命令。

using System;

using System.Data;

using System.Data.SqlClient;

///

/// 演示如何使用SqlConnection对象

///

class SqlConnectionDemo

{

static void Main()

{

// 1. 实例化连接

SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI");

SqlDataReader rdr = null;

try

{

// 2. 打开连接

conn.Open();

// 3. 将连接传递给命令对象

SqlCommand cmd = new SqlCommand("select * from Customers", conn);

//

// 4. 使用连接

//

// 获取查询结果

rdr = cmd.ExecuteReader();

//打印每个记录的客户ID

while (rdr.Read())

{

Console.WriteLine(rdr[0]);

}

}

finally

{

// 关闭读取

if (rdr != null)

{

rdr.Close();

}

// 5. 关闭连接

if (conn != null)

{

conn.Close();

}

}

}

}

获得单一值

SqlCommand cmd = new SqlCommand("select count(*) from Categories", conn);

int count = (int)cmd.ExecuteScalar();

清单1. SqlConnection演示

using System;

using System.Data;

using System.Data.SqlClient;

///

/// 演示如何使用SqlCommand对象

///

class SqlCommandDemo

{

SqlConnection conn;

public SqlCommandDemo()

{

// 实例化连接

conn = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI");

}

// 调用演示SqlCommand功能的方法

static void Main()

{

SqlCommandDemo scd = new SqlCommandDemo();

Console.WriteLine();

Console.WriteLine("插入前的数据库");

Console.WriteLine("------------------------");

//使用ExecuteReader方法

scd.ReadData();

//使用ExecuteNonQuery方法插入

scd.Insertdata();

Console.WriteLine();

Console.WriteLine("插入后的数据库");

Console.WriteLine("------------------------------");

scd.ReadData();

//使用ExecuteNonQuery方法更新

scd.UpdateData();

Console.WriteLine();

Console.WriteLine("更新后的数据库");

Console.WriteLine("------------------------------");

scd.ReadData();

//使用ExecuteNonQuery方法删除

scd.DeleteData();

Console.WriteLine();

Console.WriteLine("删除后的数据库");

Console.WriteLine("------------------------------");

scd.ReadData();

//使用ExecuteScalar方法

int numberOfRecords = scd.GetNumberOfRecords();

Console.WriteLine();

Console.WriteLine("记录数: {0}", numberOfRecords);

}

///

/// 使用ExecuteReader方法

///

public void ReadData()

{

SqlDataReader rdr = null;

try

{

//打开连接

conn.Open();

// 1.使用查询和连接实例化一个新命令

SqlCommand cmd = new SqlCommand("select CategoryName from Categories", conn);

// 2.调用Execute reader获取查询结果

rdr = cmd.ExecuteReader();

// 打印每个记录的类别名称

while (rdr.Read())

{

Console.WriteLine(rdr[0]);

}

}

finally

{

// 关闭读取器

if (rdr != null)

{

rdr.Close();

}

// 关闭连接

if (conn != null)

{

conn.Close();

}

}

}

///

/// 使用ExecuteNonQuery方法用于插入

///

public void Insertdata()

{

try

{

// 打开连接

conn.Open();

// 准备命令串

string insertString = @"insert into Categories (CategoryName, Description) values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')";

// 1. 使用查询和连接实例化一个新命令

SqlCommand cmd = new SqlCommand(insertString, conn);

// 2. 调用ExecuteNonQuery发送命令

cmd.ExecuteNonQuery();

}

finally

{

// 关闭连接

if (conn != null)

{

conn.Close();

}

}

}

///

/// 使用ExecuteNonQuery方法用于更新

///

public void UpdateData()

{

try

{

// 打开连接

conn.Open();

// 准备命令字符串

string updateString = @"update Categories set CategoryName = 'Other'where CategoryName = 'Miscellaneous'";

// 1. 仅使用命令文本实例化新命令

SqlCommand cmd = new SqlCommand(updateString);

// 2. 设置连接属性

cmd.Connection = conn;

// 3. 调用ExecuteNonQuery发送命令

cmd.ExecuteNonQuery();

}

finally

{

// 关闭连接

if (conn != null)

{

conn.Close();

}

}

}

///

/// 使用ExecuteNonQuery删除方法

///

public void DeleteData()

{

try

{

// 打开连接

conn.Open();

// 准备命令字符串

string deleteString = @" delete from Categories where CategoryName = 'Other'";

// 1. 实例化一个新命令

SqlCommand cmd = new SqlCommand();

// 2. 设置CommandText属性

cmd.CommandText = deleteString;

// 3. 设置Connection属性

cmd.Connection = conn;

// 4.调用ExecuteNonQuery发送命令

cmd.ExecuteNonQuery();

}

finally

{

// 关闭连接

if (conn != null)

{

conn.Close();

}

}

}

///

/// 使用ExecuteScalar方法

///

/// 记录数

public int GetNumberOfRecords()

{

int count = -1;

try

{

// 打开连接

conn.Open();

// 1. 实例化一个新命令

SqlCommand cmd = new SqlCommand("select count(*) from Categories", conn);

// 2. 调用ExecuteScalar发送命令

count = (int)cmd.ExecuteScalar();

}

finally

{

// 关闭连接

if (conn != null)

{

conn.Close();

}

}

return count;

}

}

SqlCommand对象

与数据库交互的过程意味着您必须指定要发生的操作。这是通过命令对象完成的。您使用命令对象将SQL语句发送到数据库。命令对象使用连接对象来确定要与哪个数据库通信。您可以单独使用命令对象,直接执行命令,或将命令对象的引用分配给SqlDataAdapter,SqlDataAdapter包含一组处理一组数据的命令,如下所述。

// 1. 使用查询和连接实例化一个新命令

SqlCommand cmd = new SqlCommand("select CategoryName from Categories", conn);

// 2. 调用Execute reader获取查询结果

SqlDataReader rdr = cmd.ExecuteReader();

插入数据

string insertString = @"insert into Categories(CategoryName, Description)values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')";

SqlCommand cmd = new SqlCommand(insertString, conn);

cmd.ExecuteNonQuery();

更新数据

// 定义命令字符串

string updateString = @"update Categories set CategoryName = 'Other'where CategoryName = 'Miscellaneous'";

// 1. 仅使用命令文本实例化新命令

SqlCommand cmd = new SqlCommand(updateString);

// 2. 设置Connection属性

cmd.Connection = conn;

// 3. 调用ExecuteNonQuery发送命令

cmd.ExecuteNonQuery();

删除数据

// 准备命令串

string deleteString = @"delete from Categories where CategoryName = 'Other'";

// 1. .实例化一个新命令

SqlCommand cmd = new SqlCommand();

// 2.设置CommandText属性

cmd.CommandText = deleteString;

// 3. 设置Connection属性

cmd.Connection = conn;

// 4. 调用ExecuteNonQuery发送命令

cmd.ExecuteNonQuery();

SqlDataReader对象

许多数据操作要求您只获取用于读取的数据流。数据读取器对象允许您从命令对象获取SELECT语句的结果。出于性能原因,从数据读取器返回的数据是仅限快进的数据流。这意味着您只能以顺序方式从流中提取数据这对速度有利,但如果您需要操作数据,那么DataSet是一个更好的对象。

创建SqlDataReader对象

SqlDataReader rdr = cmd.ExecuteReader();

数据读取

while (rdr.Read())

{

// 获取每个列字符串的结果

string contact = (string)rdr["ContactName"];

string company = (string)rdr["CompanyName"];

string city = (string)rdr["City"];

// 打印出结果

Console.Write("{0,-25}", contact);

Console.Write("{0,-20}", city);

Console.Write("{0,-25}", company);

Console.WriteLine();

}

整理

try

{

// 数据访问代码 }

finally

{

// 3. 关闭读取器

if (rdr != null)

{

rdr.Close();

}

// 关闭连接

}

清单1:使用SqlDataReader

using System;

using System.Data;

using System.Data.SqlClient;

namespace Lesson04

{

class ReaderDemo

{

static void Main()

{

ReaderDemo rd = new ReaderDemo();

rd.SimpleRead();

}

public void SimpleRead()

{

// 声明SqlDataReader中,这是在使用//两个try块和finally块

SqlDataReader rdr = null;

// 创建连接对象

SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI");

// 创建一个命令对象

SqlCommand cmd = new SqlCommand("select * from Customers", conn);

try

{

// 打开连接

conn.Open();

// 1. 获取SqlDataReader的实例

rdr = cmd.ExecuteReader();

// 打印一组列标题

Console.WriteLine("Contact Name City Company Name");

Console.WriteLine("--------------------------------");

// 2. 打印每个必要的列记录

while (rdr.Read())

{

// 获取每个列字符串的结果

string contact = (string)rdr["ContactName"];

string company = (string)rdr["CompanyName"];

string city = (string)rdr["City"];

// 打印出结果

Console.Write("{0,-25}", contact);

Console.Write("{0,-20}", city);

Console.Write("{0,-25}", company);

Console.WriteLine();

}

}

finally

{

// 3. 关闭读取器

if (rdr != null)

{

rdr.Close();

}

// 关闭连接

if (conn != null)

{

conn.Close();

}

}

}

}

}

DataSet对象

DataSet对象是数据的内存表示。它们包含多个Datatable对象,这些对象包含列和行,就像普通的数据库表一样。您甚至可以定义表之间的关系以创建父子关系。DataSet专门用于帮助管理内存中的数据,并在这种情况有意义时支持对数据的断开操作。DataSet是所有数据提供程序使用的对象,这就是它没有数据提供程序特定前缀的原因。

SqlDataAdapter对象

有时,您使用的数据主要是只读的,您很少需要对基础数据源进行更改。某些情况还要求在内存中缓存数据,以最大限度地减少不更改数据的数据库调用次数。通过数据适配器,您可以通过帮助以断开连接模式管理数据来轻松完成这些任务。数据适配器在读取数据时填充DataSet对象,并在将更改持久保存到数据库时在单个批处理中写入。数据适配器包含对连接对象的引用,并在读取或写入数据库时自动打开和关闭连接。此外,数据适配器包含对数据的SELECt,INSERT,UPDATE和DELETE操作的命令对象引用。您将为DataSet中的每个表定义一个数据适配器,它将为您处理与数据库的所有通信。您需要做的就是告诉数据适配器何时加载或写入数据库。

创建DataSet对象

DataSet dsCustomers = new DataSet();

创建SqlDataAdapter

SqlDataAdapter daCustomers = new SqlDataAdapter("select CustomerID, CompanyName from Customers", conn);

使用SqlCommandBuilder向SqlDataAdapter添加命令的方法:

SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daCustomers);

填充DataSet

daCustomers.Fill(dsCustomers, "Customers");

使用DataSet

dgCustomers.DataSource = dsCustomers;

dgCustomers.DataMember = "Customers";

更新更改

daCustomers.Update(dsCustomers, "Customers");

完整演示:

using System;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Windows.Forms;

class DisconnectedDataform : Form

{

private SqlConnection conn;

private SqlDataAdapter daCustomers;

private DataSet dsCustomers;

private DataGrid dgCustomers;

private const string tableName = "Customers";

//使用DataGrid和Button public 初始化表单

public DisconnectedDataform()

{

// 填充数据集

Initdata();

// 设置datagrid

dgCustomers = new DataGrid();

dgCustomers.Location = new Point(5, 5);

dgCustomers.Size = new Size(

this.ClientRectangle.Size.Width - 10,

this.ClientRectangle.Height - 50);

dgCustomers.DataSource = dsCustomers;

dgCustomers.DataMember = tableName;

//创建更新按钮

Button btnUpdate = new Button();

btnUpdate.Text = "Update";

btnUpdate.Location = new Point(

this.ClientRectangle.Width / 2 - btnUpdate.Width / 2,

this.ClientRectangle.Height - (btnUpdate.Height + 10));

btnUpdate.Click += new EventHandler(btnUpdateClicked);

//确保控件出现在表单

Controls.AddRange(new Control[] { dgCustomers, btnUpdate });

}

//设置ADO.NET对象

public void Initdata()

{

//实例化连接

conn = new SqlConnection( "Server=(local);DataBase=Northwind;Integrated Security=SSPI");

// 1. 实例化一个新的DataSet

dsCustomers = new DataSet();

// 2. 使用select命令和连接

daCustomers = new SqlDataAdapter( "select CustomerID, CompanyName from Customers", conn);

// 3.填写插入,更新和删除命令

SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daCustomers);

// 4. 填充数据集

daCustomers.Fill(dsCustomers, tableName);

}

// 单击更新按钮

public void btnUpdateClicked(object sender, EventArgs e)

{

// 将更改写回DataBase

daCustomers.Update(dsCustomers, tableName);

}

// 启动Windows窗体

static void Main()

{

Application.Run(new DisconnectedDataForm());

}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909424.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号