ADO.NET之9-非连接模式,内存中的数据库DataSet,DataTable---ShinePans,
DataSet被称作数据集,可以比作内存中的数据库,DataSet为ADO.NET核心,支持ADO.NET断开式,分布式数据方案的核心对象也是实现基于非连接的数据查询核心组件
DataTable常用属性:
| 属性 | 说明 |
| Columns | 获取属于该表的列的集合 |
| Rows | 获取属于该表的行的集合 |
| TableName | 获取或设置DataTable的名称 |
DataTable方法:
| 方法 | 说明 |
| AcceptChanges | 提交自上次调用AcceptChanges以来对该表进行的所有更改 |
| Clear | 清除DataTable内的所有数据 |
| NewRow | 创建与该表具有相同架构的新DataRow |
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SQLTest
{
class Program
{
static void Main(string[] args)
{
///连接数据库
DataSet ds = new DataSet(); //创建数据库DataSet对象
DataTable dt = new DataTable(); //创建数据库DataTable对象
ds.Tables.Add(dt); //将数据表对象加入数据集对象集合中
dt.Columns.Add("name", typeof(string)); //向DataTable中添加列
dt.Columns.Add("address", typeof(string));//向DataTable中添加列
DataRow dr = dt.NewRow(); //得到数据表,行对象
dr[0] = "潘潘";
dr[1] = "武汉"; //向行对象中添加数据
dt.Rows.Add(dr);
dt.Rows.Add(new object[] { "潘潘潘", "北京" }); //向数据行中添加新的对象
foreach(DataRow v in dt.Rows)
{
Console.WriteLine("{0} {1}", v[0], v[1]);
}
string connection =
"server=潘尚\\SQLEXPRESS;database=db_test;Trusted_Connection=true";
SqlConnection sc = new SqlConnection(connection);
// sc.ConnectionString = connection;
try
{
sc.Open(); //打开数据库连接
Console.WriteLine("已经打开数据库连接!");
//START:5.导出数据库中的记录//////////////////////////////////////////////////////////
/* SqlCommand cmd = new SqlCommand("SELECT * FROM db_student", sc);
SqlDataReader sdr = cmd.ExecuteReader(); //执行查找记录命令
while(sdr.Read())
{
Console.WriteLine("{0}{1}{2}{3}", sdr[0], sdr[1], sdr[2], sdr[3]);
} */
//END:5.导出数据库中的记录////////////////////////////////////////////////////////////
//START:4.查询数据库记录//////////////////////////////////////////////////////////////
/* SqlCommand cmd = new SqlCommand("SELECT count(*) FROM db_student", sc);
int i = (int)cmd.ExecuteScalar();//执行查找记录的命令
Console.WriteLine("表中共有{0}条数据", i.ToString()); */
//END:4.查询数据库记录////////////////////////////////////////////////////////////////
//START:3.修改数据库数据的代码////////////////////////////////////////////////////////
/* SqlCommand cmd = new SqlCommand("UPDATE db_student SET student_grade=99 where student_name=@name", sc); //创建SqlCommand对象
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "潘";
int i = cmd.ExecuteNonQuery();
if (i > 0) Console.WriteLine("修改成功!"); */
//END:3.修改数据库数据的代码/////////////////////////////////////////////////////////
//START:1.删除数据库记录代码段///////////////////////////////////////////////////////
/* string cmdtext = "DELETE FROM db_student WHERE student_name=@name";
SqlCommand cmd = new SqlCommand(cmdtext, sc);
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "潘";
int i = cmd.ExecuteNonQuery();
if (i > 0) Console.WriteLine("删除记录成功!"); */
//END:1.删除数据库记录代码段/////////////////////////////////////////////////////////
//START:2.添加记录的代码///////////////////////////////////////////////////////////////
/* SqlCommand cmd = new SqlCommand();//创建SqlCommand对象
cmd.CommandType = CommandType.Text; //设置执行文本命令
cmd.Connection = sc; //设置对象属性
cmd.CommandText =
"INSERT INTO db_student(student_name,student_age,student_address,student_grade)VALUES(@name,@age,@address,@grade)";
//添加参数并为参数赋值
cmd.Parameters.Add("@name", SqlDbType.VarChar, 10).Value = "潘";
cmd.Parameters.Add("@age", SqlDbType.Int).Value = 19;
cmd.Parameters.Add("@address", SqlDbType.VarChar).Value = "武汉";
cmd.Parameters.Add("@grade", SqlDbType.Int).Value = 100;
int i = cmd.ExecuteNonQuery(); //执行数据库添加记录命令
if (i > 0) Console.WriteLine("添加记录成功"); */ //控制台输出添加记录
//END:2.添加记录的代码/////////////////////////////////////////////////////////////////
}
catch (Exception ex)
{
Console.WriteLine("打开数据库错误:{0}", ex.Message);
}
finally
{
sc.Close();
Console.WriteLine("数据库连接已关闭!");
}
System.Console.ReadLine();
}
}
}
结果:
在未打开数据库连接之前,在内存中处理数据
using System.Data;
using System.Data.SqlClient;
..
string strConnection="user id=sa;password=;";
strConnection+="initial catalog=Northwind;Server=YourSQLServer;";
strConnection+="Connect Timeout=30";
SqlConnection objConnection=new SqlConnection(strConnection);
..
objConnection.Open();
objConnection.Close();
strConnection这个变量里存放的是连接数据库所需要的连接字符串,他指定了要使用的数据提供者和要使用的数据源.
首先,连接SQL Server使用的命名空间是"System.Data.SqlClient".
其次就是他的连接字符串了,我们一个一个参数来介绍(注意:参数间用分号分隔):
"user id=sa":连接数据库的验证用户名为sa.他还有一个别名"uid",所以这句我们还可以写成"uid=sa".
"password=":连接数据库的验证密码为空.他的别名为"pwd",所以我们可以写为"pwd=".
这里注意,你的SQL Server必须已经设置了需要用户名和密码来登录,否则不能用这样的方式来登录.如果你的SQL Server设置为Windows登录,那么在这里就不需要使用"user id"和"password"这样的方式来登录,而需要使用"Trusted_Connection=SSPI"来进行登录.
"initial catalog=Northwind":使用的数据源为"Northwind"这个数据库.他的别名为"Database",本句可以写成"Database=Northwind".
"Server=YourSQLServer":使用名为"YourSQLServer"的服务器.他的别名为"Data Source","Address","Addr".如果使用的是本地数据库且定义了实例名,则可以写为"Server=(local)/实例名";如果是远程服务器,则将"(local)"替换为远程服务器的名称或IP地址.
"Connect Timeout=30":连接超时时间为30秒.
在这里,建立连接对象用的构造函数为:SqlConnection.
从开发的角度来说~DataSet是数据集,是针对数据的一个集合
DataTable是一张表~也就是数据
DataColumn是一张表里面的列
DataRow 是数据的条数
用通俗的话来说
DataSet是一个文件夹
DataTable是一个文件
DataColumn和DataRow都是这个文件的内容