在ADO.NET中,无连接模式访问数据库通常是按照以下步骤进行:
首先,将数据从数据库服务器通过SQL查询命令获取到内存中的DataSet和DataTable中,并且断开与数据库的连接。
然后,在内存中根据业务逻辑对DataSet和DataTable 中的数据进行合理的运算。
最后,再连接到数据库,将DataSet和DataTable中的更改提交到数据库服务器。
/***************************************************************************************************************************************
由此可见,在ADO.NET中,通过SqlDataAdapter和DataSet联合使用实现基于无连接的数据库访问。
SqlDataAdapter类作为本地DataSet或者DataTable与数据库服务器之间的连接器,提供用于填充DataSet和更新SQL Server数据库的一组数据命令和一个数据库链接。
【关于Fill()和Update()方法】
(1)SqlDataAdapter类的Fill()和Update()方法都是自动打开和关闭数据库链接。在执行之前,至少要指定它的SelectCommand属性,该SqlCommand对象记录了Fill()方法用来查询数据的SQL命令。Update()方法会根据数据的更改,自动调用DeleteCommand、InsertCommand和UpdateCommand中的某一个提交数据。
(2)Fill()方法用于从数据库服务器获取数据并填充到DataSet和DataTable中;
Update()方法用于将DataSet和DataTable中的数据更改提交到数据库服务器中。
(3)FillScheme()方法时从数据库服务器获取数据架构到本地数据集或数据表。如果只是需要数据结构,则调用这个函数方法
》》》》》Fill()方法的使用:(重载)
1、int Fill(DataSet dataSet)》》》建议使用这个就可以了,简单
根据SQL查询命令从数据库获取数据,并且自动创建一个名为Table的DataTable对象来保存数据,然后将DataTable对象添加到dataSet中。
2、int Fill(DataTable dataTable)
根据SQL查询命令从数据库获取数据,并且自动将数据保存到dataTable对象中。
【例子1】方法1:
string strSql = "Data Source=VQJREZV7DVSK2QA;Initial Catalog=gridviewAPP;User ID=sa;Password=admin@123456";
SqlConnection connew = new SqlConnection(strSql);
SqlCommand cmd = connew.CreateCommand();
cmd.CommandText = "select userName,sex,address from userInfo";
//创建SqlDataAdapter对象
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
DataTable dt = ds.Tables["Table"];
dt.Rows[0]["sex"]="男";
dt.Rows.Add("小红","女","123456");
adapter.Update(ds);
【例子2】方法2:
string sqluser = "select * from userinfo where username='"+textBox1.Text.Trim()+"'";
SqlDataAdapter adp = new SqlDataAdapter(sqluser, sql.sqlConnection);
DataSet ds = new DataSet();
adp.Fill(ds, "userinfo");//填充数据集
/*数据的绑定*/
Binding newBind = new Binding("Text", ds, "userinfo.userpwd");
textBox2.DataBindings.Add(newBind);
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
string sqlScore = @"select score from UserInfo where userName='" + userName + "'";
SqlDataAdapter adp = new SqlDataAdapter(sqlScore, DBConnect.ConnString);
DataSet ds = new DataSet();
adp.Fill(ds, "UserInfo");
label6.Text = ds.Tables["UserInfo"].Rows[0][0].ToString();//显示积分
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
无奈而华丽丽的分割线【SqlDataAdapter初始化】
*****************************************************************************************************
【1】初始化SqlDataAdapter类的新实例
protected void Button1_Click(object sender, EventArgs e)
{
string conString = "data source=127.0.0.1;initial catalog=codematic;user id=sa;password=";
SqlConnection myConnection = new SqlConnection(conString);
SqlCommand cmd = myConnection.CreateCommand();
cmd.CommandText = "SELECT * FROM P_Product";
DataSet ds = new DataSet();
myConnection.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;
adapter.Fill(ds, "ds");
myConnection.Close();
Label1.Text = "1查询结果";
GridView1.DataSource = ds;
GridView1.DataBind();
}
【2】使用指定的SqlCommand初始化SqlDataAdapter类的新实例
protected void Button2_Click(object sender, EventArgs e)
{
string conString = "data source=127.0.0.1;initial catalog=codematic;user id=sa;password=";
SqlConnection myConnection = new SqlConnection(conString);
DataSet ds = new DataSet();
SqlCommand cmd = myConnection.CreateCommand();
cmd.CommandText = "SELECT * FROM P_Product";
myConnection.Open();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds, "ds");
myConnection.Close();
Label1.Text = "2查询结果";
GridView1.DataSource = ds;
GridView1.DataBind();
}
【3】使用SqlConnection和Sqlcommand对象初始化SqlDataAdapter类的新实例
protected void Button3_Click(object sender, EventArgs e)
{
string conString = "data source=127.0.0.1;initial catalog=codematic;user id=sa;password=";
string strSQL = "SELECT * FROM P_Product";
SqlConnection myConnection = new SqlConnection(conString);
DataSet ds = new DataSet();
myConnection.Open();
//这种方法则不需要使用SqlCommand语句了
SqlDataAdapter adapter = new SqlDataAdapter(strSQL,myConnection);
adapter.Fill(ds, "ds");
myConnection.Close();
Label1.Text = "3查询结果";
GridView1.DataSource = ds;
GridView1.DataBind();
}
【4】使用一个链接字符串和SqlCommand对象初始化SqlDataAdapter类的实例
protected void Button4_Click(object sender, EventArgs e)
{
string conString = "data source=127.0.0.1;initial catalog=codematic;user id=sa;password=";
string strSQL = "SELECT * FROM P_Product";
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(strSQL,conString);
adapter.Fill(ds, "ds");
Label1.Text = "4查询结果";
GridView1.DataSource = ds;
GridView1.DataBind();
}
【5】使用selectcommand字符串和SqlConnection对象初始化SqlDataAdapter类的实例
protected void Button5_Click(object sender, EventArgs e)
{
string conString = "data source=127.0.0.1;initial catalog=codematic;user id=sa;password=";
SqlConnection myConnection = new SqlConnection(conString);
string strSQL = "SELECT * FROM P_Product";
DataSet ds = new DataSet();
myConnection.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(strSQL, myConnection);
adapter.Fill(ds, "ds");
myConnection.Close();
Label1.Text = "5查询结果";
GridView1.DataSource = ds;
GridView1.DataBind();
}
【清空GridView数据】
protected void Button7_Click(object sender, EventArgs e)
{
Label1.Text = "数据清空";
GridView1.DataSource = null;
GridView1.DataBind();
}