```csharp
//app.config
<configuration>
<connectionStrings>
<add name="NW"
connectionString="server=(localdb)\mssqllocaldb;database=mydemo;trusted_connection=true;"/>
</connectionStrings>
//Main
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
Console.WriteLine(cnStr);
//=====================================
//connection
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
Console.WriteLine(cnStr);
SqlConnection cn;
using (cn=new SqlConnection(cnStr))
{
cn.Open();
Console.WriteLine(cn.State); //open
}
Console.WriteLine(cn.State); //closed
//=========================================
//ExecuteScalar
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
using (SqlConnection cn = new SqlConnection(cnStr))
{
cn.Open();
SqlCommand cmd=new SqlCommand("select count(*) from Products", cn);
int result=(int)cmd.ExecuteScalar();
Console.WriteLine(result);
}
//=========================================
//ExecuteNonQuery
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
using (var cn = new SqlConnection(cnStr))
{
cn.Open();
var cmd = new SqlCommand("insert region values(6,'yyyy')", cn);
int affected = cmd.ExecuteNonQuery();
Console.WriteLine(affected);
}
//==============================================
//parameter
Console.Write("Id: ");
int id=int.Parse(Console.ReadLine());
Console.Write("Description: ");
string description = Console.ReadLine();
//Console.WriteLine((id,description));
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
using (var cn = new SqlConnection(cnStr))
{
cn.Open();
var cmd = new SqlCommand("insert region values(@id,@description)", cn);
cmd.Parameters.AddWithValue("id", id);
cmd.Parameters.AddWithValue("description", description);
int affected = cmd.ExecuteNonQuery();
Console.WriteLine(affected);
}
//=====================================
//ExecuteReader
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
using (var cn = new SqlConnection(cnStr))
{
cn.Open();
var cmd = new SqlCommand("select productid, productname, unitprice from products", cn);
using (var dr=cmd.ExecuteReader())
{
while (dr.Read())
{
Console.WriteLine($"{dr.GetInt32(0),-10}|{dr["productname"],-40}|{dr.GetDecimal(2)}");
}
}
}
//==================================
//stored proc
Console.Write("Customer Id:");
string id=Console.ReadLine();
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
using (var cn = new SqlConnection(cnStr))
{
cn.Open();
//var cmd = new SqlCommand("[dbo].[CustOrderHist] 'ALFKI'", cn);
var cmd = new SqlCommand("CustOrderHist", cn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customerid", id);
using (var dr=cmd.ExecuteReader())
{
while (dr.Read())
{
Console.WriteLine($"{dr[0],-50}|{dr[1]}");
}
}
}
//================================
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
using (var cn = new SqlConnection(cnStr))
{
var da = new SqlDataAdapter("select productid,productname, unitprice from products", cn);
var ds =new DataSet();
da.Fill(ds, "products");
foreach (DataRow item in ds.Tables["products"].Rows)
{
Console.WriteLine($"{item[0],-10}|{item["productname"],-40}|{item[2]}");
}
}
//==================================
//LINQ
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
using (var cn = new SqlConnection(cnStr))
{
var da = new SqlDataAdapter(@"select ProductID, ProductName, UnitPrice, CategoryName
from Products as p
inner join Categories as c
on p.CategoryID = c.CategoryID", cn);
var ds =new DataSet();
da.Fill(ds, "products");
var query=from p in ds.Tables["products"].AsEnumerable()
select p;
foreach (var item in query)
{
Console.WriteLine($"{item[0]}{item[1]}{item[2]}{item[3]}");
}
}
//=========================
class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string CategoryName { get; set; }
}
var cnStr = ConfigurationManager.ConnectionStrings["NW"].ConnectionString;
using (var cn = new SqlConnection(cnStr))
{
var da = new SqlDataAdapter(@"select ProductID, ProductName, UnitPrice, CategoryName
from Products as p
inner join Categories as c
on p.CategoryID = c.CategoryID", cn);
var ds =new DataSet();
da.Fill(ds, "products");
var query = from row in ds.Tables["products"].AsEnumerable()
select new Product {
Id =(int) row[0],
Name =(string)row[1],
Price = (decimal)row[2],
CategoryName = (string)row[3]
};
foreach (var item in query)
{
Console.WriteLine($"{item.Id,-10}|{item.Name,-40}|{item.Price,-10}|{item.CategoryName}");
}
//================================
//group by
var query = (from row in ds.Tables["products"].AsEnumerable()
select row).GroupBy(x => x["categoryname"]);
foreach (var g in query)
{
Console.WriteLine(g.Key);
foreach (var item in g)
{
Console.WriteLine($"\t{item["productname"]} {item["unitprice"]}");
}
}
//=======================
//select
var query = from row in ds.Tables["products"].AsEnumerable()
select new
{
ProductId = row["productid"],
ProductName = row["productname"],
UnitPrice = row["unitprice"],
CategroyName = row["categoryname"]
};
foreach (var item in query)
{
Console.WriteLine($"{item.ProductName} ${item.UnitPrice}");
}
```