using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
namespace VA10._数据适配_DataAdapter对象
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//更改数据 ExecuteScalar 返回一个值 一般用于返回一个值的语句, 如求数据统计 count()
string constr = "Server=XX;user=sa;pwd=XXX;database=XXXX;";
SqlConnection myCon = new SqlConnection(constr);
try
{
myCon.Open();
string sql = " select * from [000] ";
SqlDataAdapter myda = new SqlDataAdapter(sql, myCon); //DataAdapter 数据适配
DataSet myds = new DataSet(); //声明数据集DataSet
myda.Fill(myds, "[000]"); //向 myds 填充数据
OutValues(myds); //数据填充成功
}
catch (Exception myex)
{
MessageBox.Show(myex.Message.ToString());
}
finally
{
myCon.Close();
}
}
//向DataSet 读取执行命令
private void button2_Click(object sender, EventArgs e)
{
//DataAdapter对象可用于执行数据库的命令操作,含有四个不同的操作命令
//1.SelectCommand :用于选取数据源中的记录
//2.InsertCommand :同于向数据源中新插入一条记录
//3.UpdateCommand :用于更新数据源中的数据
//4.DeleteCommand :用于删除数据源中的记录
string constr = "Server=XX;user=sa;pwd=XXX;database=XXX;";
SqlConnection myCon = new SqlConnection(constr);
try
{
//更新数据源文件
myCon.Open();
string updatesql = "update [000] set 总金额='1000' where id ='3000'";
string sql = " select * from [000] ";
SqlDataAdapter myda = new SqlDataAdapter(sql, myCon);//DataAdapter 数据适配
myda.UpdateCommand = new SqlCommand(updatesql, myCon); //更新数据命令
//显示数据 向 myds 填充数据
DataSet myds = new DataSet();
myda.Fill(myds, "mytable"); ///向 myds 填充数据 acceptchang处于true状态
MessageBox.Show("未更新原dataset对象内容");
OutValues(myds);
DataRow row = myds.Tables[0].Rows[0];
row["姓名"] = "OH_15345"; // (acceptchang处于true状态 不更新, 将行发生变动 )
MessageBox.Show("更改后dataset对象内容");
myda.Update(myds, "mytable"); //为指定表明的Table 更新
OutValues(myds);
}
catch (Exception myex)
{
MessageBox.Show(myex.Message.ToString());
}
finally
{
myCon.Close();
}
}
public static void OutValues(DataSet ds)
{
foreach (DataTable dt in ds.Tables)
{
MessageBox.Show("表名" + dt.TableName);
//表行
foreach (DataRow row in dt.Rows)
{
//表列
foreach (DataColumn col in dt.Columns)
{
//根据 行 列 输出字段
MessageBox.Show(row[col] + "\t");
}
}
}
}
private void button3_Click(object sender, EventArgs e)
{
string constr = "Server=H6;user=sa;pwd=123123;database=2016-04-22;";
SqlConnection myCon = new SqlConnection(constr);
try
{
//更新数据源文件
myCon.Open();
string sql = " select * from [000] where id='3000' ";
SqlDataAdapter myda = new SqlDataAdapter(sql, myCon);//DataAdapter 数据适配
/*
注意打开和关闭连接的处理
在调用SqlCommand对象执行sql命令之前,需要保证与该对象关联的SqlConnection对象时打开的,否则SqlCommand的方法执行时将引发一个异常,但是我们在上面的代码中看到,SqlDataAdapter没有这样的要求。
如果调用SqlDataAdapter的Fill方法,并且其SelectCommand属性的SqlConnection是关闭状态,则SqlDataAdapter会自动打开它,然后提交查询,获取结果,最后关闭连接。如果在调用Fill方法前,SqlConnection是打开的,则查询执行完毕后,SqlConnection还将是打开的,也就是说SqlDataAdapter会保证SqlConnection的状态恢复到原来的情形。
*/
sql = " select * from [000] where id='3001'";
SqlDataAdapter myda2 = new SqlDataAdapter(sql, myCon);//DataAdapter 数据适配
DataSet ds = new DataSet();
//myda.Fill(ds, "MyTableName"); ///Fill方法的重载,通过指定DataTable
//myda2.Fill(ds, "Orders"); ///Fill方法的重载,通过指定DataTable
/*
以上代码会导致连接被打开和关闭两次,在调用Fill方法时各一次。为了避免打开和关闭SqlConnection对象,在调用SqlDataAdapter对象的Fill方法之前,
我们可以先打开SqlConnection对象,如果希望之后关闭连接,我们可以再调用Close方法,就像这样:
*/
myda.Fill(ds, "MyTableName");
myda2.Fill(ds, "Orders");
myCon.Close();
OutValues(ds);
//获取DataSet数据集中的book1表
DataTable dt = ds.Tables["MyTableName"];
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
MessageBox.Show (dt.Rows[i][j].ToString());
}
}
}
catch (Exception myex)
{
MessageBox.Show(myex.Message.ToString());
}
finally
{
myCon.Close();
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{ //DataAdapter对象时DataSet和数据源之间的桥梁,可以建立并初始化数据表(DataTable) ,对数据源执行SQL指令,
//与Dataset对象结合,提供Dataset对象存取数据,可视为DataSet对象操作核心
string constr = "Server=XXX;user=sa;pwd=XXX;database=XXXX";
SqlConnection mycon = new SqlConnection(constr);
try {
//mycon.Open();
//string sql = "select top 10 userid,name,job,createname from [View_HN_KqQingJia] ";
////DataAdapter 数据适配
//SqlDataAdapter myda = new SqlDataAdapter(sql, mycon);
////声明数据集DataSet
//DataSet myds = new DataSet();
////向 myds 填充数据
//myda.Fill(myds, "[View_HN_KqQingJia]");
//Console.WriteLine("数据填充成功!");
//OutValues(myds);
//DataAdapter对象可用于执行数据库的命令操作,含有四个不同的操作命令
//1.SelectCommand :用于选取数据源中的记录
//2.InsertCommand :同于向数据源中新插入一条记录
//3.UpdateCommand :用于更新数据源中的数据
//4.DeleteCommand :用于删除数据源中的记录
//更改数据源文件
mycon.Open();
string sql = "select top 10 userid,name,job,createname from [View_HN_KqQingJia] ";
string updatesql = "update View_HN_KqQingJia set createname='admin' where userid='OH_00006'";
//DataAdapter 数据适配
SqlDataAdapter myda = new SqlDataAdapter(sql,mycon);
myda.UpdateCommand = new SqlCommand(updatesql, mycon); //更新数据命令
DataSet myds = new DataSet(); //显示数据 向 myds 填充数据
myda.Fill(myds, "mytable"); //向 myds 填充数据 acceptchang处于true状态
Console.WriteLine("未更新原dataset对象内容");
OutValues(myds);
//改变显示的数据
DataRow row = myds.Tables[0].Rows[3];
row["createname"] = "123";
myda.Update(myds,"mytable");
Console.WriteLine("更改后dataset对象内容");
OutValues(myds);
Console.ReadKey();
}
catch (Exception ex){
Console.WriteLine(ex.Message.ToString ());
}
finally{}
}
public static void OutValues(DataSet ds) {
foreach (DataTable dt in ds.Tables) {
Console.WriteLine("表名"+dt.TableName);
//表行
foreach(DataRow row in dt.Rows ){
//表列
foreach (DataColumn col in dt.Columns) {
//根据 行 列 输出字段
Console.Write(row[col]+"\t");
}
Console.WriteLine();
}
}
}
}
}
联系客服