using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//操作SQL数据库必须引入此包
using System.Data.SqlClient;
//使用DataSet类必须引入此包
using System.Data;
namespace ConsoleApplication1
{
class Program
{
private string sqlConnectionCommand = "server=localhost;database=testDB;uid=sa;pwd=sa";//"server=localhost;database=testDB;integrated security=SSPI";//Windows验证方式
private string sqlSelectTable = "select id,name from table1";
private string sqlDelCommand = "Delete From table1 Where id = 1";
private string sqlUpdateCommand = "update table1 set name = '99' Where id = 2";
static void Main(string[] args)
{
Program p1 = new Program();
p1.testDBsetFun();
}
public void doSqlSelect()
{
SqlConnection sqlConnection = new SqlConnection(sqlConnectionCommand);
//如果初始化构造函数不包含连接数据库信息,则可以用创建的对象的属性关联连接数据库信息
//SqlConnection sqlConnection = new SqlConnection();
//sqlConnection.ConnectionString = sqlConnectionCommand;
SqlCommand sqlCommand = new SqlCommand(sqlSelectTable, sqlConnection);//建立一个接受SQL语句并可以执行返回结果的对象
//如果初始化时没包含要执行的SQL语句和关联的数据库连接则可通过创建的对象的属性来关联
//SqlCommand sqlCommand = new SqlCommand();//创建一个执行SQL语句类的对象
//sqlCommand.Connection = sqlConnection;//关联连接数据库对象
//sqlCommand.CommandText = sqlSelectTable1;//关联执行的SQL语句
//在执行SQL语句前必须把连接打开
sqlConnection.Open();
//如果执行非查询语句(更新,插入等)用SqlCommand类ExecuteNonQuery();方法来执行,返回一个int型
//sqlCommand.ExecuteNonQuery();
//执行查询语句用SqlCommand类ExecuteReader();方法来执行。用SqlDataReader类对象接收执行的结果便于沥遍
SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
//开始循环沥遍
while (sqlDataReader.Read())
{
int id = (int)sqlDataReader["id"];//(int)sqlDataReader[0];//也可以根据查询结果列的序号0为第一列
string name = (string)sqlDataReader["name"];//(string)sqlDataReader["name"];
Console.WriteLine("ID = " + id + " , Name = " + name);
}
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
sqlDataReader.Close();
sqlCommand.Dispose();
sqlConnection.Close();
}
void testDBsetFun()
{
SqlConnection sqlConnection = new SqlConnection(sqlConnectionCommand);
SqlCommand sqlCommand = new SqlCommand(sqlSelectTable, sqlConnection);
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();//建立对虚拟表进行操作的对象
sqlDataAdapter.SelectCommand = sqlCommand;//把SqlDataAdapter关联一个拥有查询语句的sqlCommand对象
sqlConnection.Open();
DataSet dsDataSet = new DataSet();//创建虚拟表对象
sqlDataAdapter.Fill(dsDataSet, "Customers");//用SqlDataAdapter对象把刚关联的查询结果赋到虚拟表中,并赋一个指定表名"Customers"(任意起)
sqlCommand.Dispose();
sqlConnection.Close();
dsDataSet.Tables["Customers"].Rows[0].Delete();//指明要在指定虚拟表中删除的索引行,表名也可换成指定表储存在dsDataSet中的索引值
dsDataSet.Tables["Customers"].AcceptChanges();//执行对指定虚拟表指定索引行删除的动作(提交执行自加载此 dsDataSet 或上次调用 AcceptChanges() 以来对其进行的所有更改。)
sqlDataAdapter.Update(dsDataSet, "Customers");//调用Update方法,以dsDataSet中指定表的数据更新数据库对应表但是放在AcceptChanges()方法下则不执行
int a1 = dsDataSet.Tables[0].Rows.Count;//取得指定虚拟表的总行数
int a2 = dsDataSet.Tables["Customers"].Columns.Count;//取得指定虚拟表的总列数
int a3 = dsDataSet.Tables.Count;//取得指定虚拟表的总列数
string a4 = dsDataSet.Tables["Customers"].Columns[0].ToString();//取得指定虚拟表的索引为0列的列名(字段名)
//取得指定虚拟表的指定索引行指定列的值
string val = dsDataSet.Tables["Customers"].Rows[1]["name"].ToString();//也可通过虚拟表中该列的索引来取值//string b = dsDataSet.Tables["Customers"].Rows[1][1].ToString();
Console.WriteLine("RowsCount = " + a1 + " , val = " + val);
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
}