1)找到当前的bin文件夹:
string outputFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
2)调用数据库的自带procedure(这里是detach)并且传参:
Console.WriteLine("Detaching the database...");
var detachCommand = new SqlCommand("sp_detach_db", connection);
detachCommand.CommandType = CommandType.StoredProcedure;
detachCommand.Parameters.AddWithValue("@dbname", dbName);
await detachCommand.ExecuteNonQueryAsync();
3)异步读取查询结果:
cmd = new SqlCommand(@"SELECT * FROM [dbo].[CustomTable]", connection);
using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
while (await reader.ReadAsync())
var id = reader.GetFieldValue<int>(0);
var name = reader.GetFieldValue<string>(1);
Console.WriteLine("Table row: Id {0}, Name {1}", id, name);
完整代码:
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Reflection;
using System.Threading.Tasks;
namespace Chapter9.Recipe3
class Program
static void Main(string[] args)
const string dataBaseName = "CustomDatabase";
var t = ProcessAsynchronousIO(dataBaseName);
t.GetAwaiter().GetResult();
Console.WriteLine("Press Enter to exit");
Console.ReadLine();
async static Task ProcessAsynchronousIO(string dbName)
const string connectionString = @"Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True";
string outputFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string dbFileName = Path.Combine(outputFolder, string.Format(@".\{0}.mdf", dbName));
string dbLogFileName = Path.Combine(outputFolder, string.Format(@".\{0}_log.ldf", dbName));
string dbConnectionString =
string.Format(@"Data Source=(LocalDB)\v11.0;AttachDBFileName={1};Initial Catalog={0};Integrated Security=True;", dbName, dbFileName);
#region 创建数据库 CustomDatabase
using (var connection = new SqlConnection(connectionString))
//阻塞等待连接完成
await connection.OpenAsync();
//如果纯在数据库,则删除他。
if (File.Exists(dbFileName))
Console.WriteLine("Detaching the database...");
var detachCommand = new SqlCommand("sp_detach_db", connection);
detachCommand.CommandType = CommandType.StoredProcedure;
detachCommand.Parameters.AddWithValue("@dbname", dbName);
await detachCommand.ExecuteNonQueryAsync();
Console.WriteLine("The database was detached succesfully.");
Console.WriteLine("Deleteing the database...");
if(File.Exists(dbLogFileName)) File.Delete(dbLogFileName);
File.Delete(dbFileName);
Console.WriteLine("The database was deleted succesfully.");
//创建数据库
Console.WriteLine("Creating the database...");
string createCommand = String.Format("CREATE DATABASE {0} ON (NAME = N'{0}', FILENAME = '{1}')", dbName, dbFileName);
var cmd = new SqlCommand(createCommand, connection);
await cmd.ExecuteNonQueryAsync();
Console.WriteLine("The database was created succesfully");
#endregion
#region 建立数据表 dbo.CustomTable,并且执行 Select * from dbo.CustomTable
using (var connection = new SqlConnection(dbConnectionString))
await connection.OpenAsync();
var cmd = new SqlCommand("SELECT newid()", connection);
var result = await cmd.ExecuteScalarAsync();
Console.WriteLine("New GUID from DataBase: {0}", result);
cmd = new SqlCommand(@"CREATE TABLE [dbo].[CustomTable]( [ID] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_ID] PRIMARY KEY CLUSTERED ([ID] ASC) ON [PRIMARY]) ON [PRIMARY]", connection);
await cmd.ExecuteNonQueryAsync();
Console.WriteLine("Table was created succesfully.");
cmd = new SqlCommand(@"INSERT INTO [dbo].[CustomTable] (Name) VALUES ('John');
INSERT INTO [dbo].[CustomTable] (Name) VALUES ('Peter');
INSERT INTO [dbo].[CustomTable] (Name) VALUES ('James');
INSERT INTO [dbo].[CustomTable] (Name) VALUES ('Eugene');", connection);
await cmd.ExecuteNonQueryAsync();
Console.WriteLine("Inserted data succesfully");
Console.WriteLine("Reading data from table...");
cmd = new SqlCommand(@"SELECT * FROM [dbo].[CustomTable]", connection);
using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
while (await reader.ReadAsync())
var id = reader.GetFieldValue<int>(0);
var name = reader.GetFieldValue<string>(1);
Console.WriteLine("Table row: Id {0}, Name {1}", id, name);
#endregion
catch (Exception ex)
Console.WriteLine("Error: {0}", ex.Message);
0x00 引言
之前写程序的时候在遇到一些比较花时间的操作例如HTTP请求时,总是会new一个Thread处理。对XxxxxAsync()之类的方法也没去了解过,倒也没遇到什么大问题。最近因为需求要求用DevExpress写界面,跑起来后发现比Native控件效率差好多。这才想到之前看到的“金科玉律”:不要在UI线程上执行界面无关的操作,因此集中看了下C#的异步操作,分享一下自己的比较和.
异步这个概念在不同语境下有不同的解释,比如在一个单核CPU里开启两个线程执行两个函数,通常认为这种调用是异步的,但对于CPU来说它是单核不可能同时运行两个函数,不过是由系统调度在不同的时间分片中执行。一般来说,如果两个工作能同时进行,就认为是异步的。在编程中,它通常代表函数的调用可以在不执行完的情况下返回,必要时在完成时回调。有一个概念常常被混淆,多线程和异步。
创建学生数据库,学生数据表#1.创建空项目,添加webfrom1窗体#2.添加数据库,#2.1视图->Sql Server对象资源管理器,表中的数据类型自己创建,创建完成表后,右键表名,查看数据,自己添加数据即可#3.在webfrom1.aspx.cs中添加数据#源码位置如图,然后运行项目即可.好兄弟们来波关注吧
#1.创建空项目,添加webfrom1窗体
不会创建的参考这一个实验:
https://blog.csdn.net/F_fengzilin/article/details/11793504
第9章 数据绑定
目录第9章 数据绑定9.1 数据绑定基本概念9.1.1 绑定和绑定表达式9.1.2 绑定模式(Mode属性)9.1.3 控制更新源的时间(UpdateSourceTrigger)9.1.4 绑定路径语法(Path属性)9.1.5 数据转换9.2 简单数据绑定9.2.1 在单个属性中直接指定绑定源9.2.2 通过DataContext将多个属性绑定到相同的源第10章 数据库与实体数据模型10.1 创建数据库和表10.1.1 ADO.NET数据访问技术10.1.2
本文实例讲述了C#实现异步连接Sql Server数据库的方法。分享给大家供大家参考。具体分析如下:
.net最新版提供了await方法,可以使我们可以很容易实现到数据库的异步连接
代码如下:readonly string ConnectionString = “Data Source=database_server_name;Initial Catalog=Store;Integrated Security=True”;
protected async void ExecuteCommandAsync()
using (SqlConnection con = new SqlConn
访问数据库可能要花一些时间。这里不应该阻塞用户界面。ADO.NET 类 通过异步方法和同步方法提供了基于任务的异步编程。下面的代码片段类似于上一个使用 SqlDataReader 的代码,但它使用了异步的方法调用。连接用SqlConnection.OpenAsync 打开,读取器从SqlCommand.ExecuteReaderAsync 方法中返回,记录使用SqIDat...
文章目录前言一、Async/Await特性语法结构1. 异步调用方法:异步方法的调用,其返回类型有三种:2. 异步声明方法3. 必要的Await表达式二、在WPF如何使用Async/Await特性?1.先展示一个WPF示例三、如何创建并使用自己的异步方法?四、如何取消异步任务?五、如何同步等待异步任务完成?六、如何异步的等待任务完成七、如何暂停异步任务而不影响主线程任务的执行?
在总结之前需要了解什么是同步方法、异步方法
同步方法:程序按照编写顺序进行执行,在调用方法时线程会等待方法返回后再继续执.
以前在学习Socket的时候,经常会使用到异步操作,孰不知将异步用到数据库查询上也是一把利器,特别是在大数据量查询的时候效果应该是比较明显的。我顺便写了一个小例子,供大家参考。
我们平时默认使用的查询是同步的,也就是说一方不等待另一方做好准备,当查询时间过长时,客户端会被一直阻塞在这里而不能做其他事情。而当我们使用异步时,程序并不会阻塞或挂起线程,它会通过一个代理的回调方法完成查询,主线程将会...
ASP.NET MVC2后开始了对异步请求管道的支持,异步请求管道的作用是允许web服务器处理长时间运行的请求,比如
那些花费大量时间等待网络或数据库操作完成的请求仍能保持对其他请求的响应;所以异步主要是高效率而不是提高一个
单独请求的响应速度,尽管异步花费了与同步一样的事件响应用户请求,但在异步管道中,服务器不会因为在等待
属性一:CommandText(获取或设置要在数据源中执行的 Transact-SQL 语句、表名或存储过程。)
// 摘要:
// 获取或设置要在数据源中执行的 Transact...
真觉得自己的知识面还是比较窄,在此之前,居然还不知道SqlLocalDb。
SqlLocalDb是啥?其实就是简化SQL Server的本地数据库,可以这样子说,SQL Server既可以作为远程,也可以做本地,
而SqlLocalDb只能作为本地使用。说的直接一点,SqlLocalDb就是一个轻量级的基于本地的T-SQL数据库,全称:SQL Server Express LocalDb。