首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

哥们门问个dataset 和dataread的有关问题

2012-01-09 
哥们门问个dataset 和dataread的问题哥们门两个问题第一个:我做dataread的时候用完了需要read.close请问如

哥们门问个dataset 和dataread的问题
哥们门两个问题
第一个:我做dataread的时候用完了需要read.close

请问如果要用dataset的话需要断开连接什么的么?或者关闭什么的么?


第二个问题:
我用dataread的时候就string   username=read[ "username "].tostring()
我看过别人写的dt.table[ "** "][数字][数字]
这样来获取,我感觉挺麻烦的
请问dataset中能不能像dataread那样直接写字段名的方法呢   谢谢


两个问题   每个50分   一共100分呵呵谢谢大家帮忙

[解决办法]
一样的啊 也要关闭连接
[解决办法]
using System;
using System.Data;
using System.Data.SqlClient;

namespace Microsoft.AdoNet.DataSetDemo
{
class NorthwindDataSet
{
static void Main()
{
string connectionString = GetConnectionString();
ConnectToData(connectionString);
}

private static void ConnectToData(string connectionString)
{
//Create a SqlConnection to the Northwind database.
using (SqlConnection connection =
new SqlConnection(connectionString))
{
//Create a SqlDataAdapter for the Suppliers table.
SqlDataAdapter adapter = new SqlDataAdapter();

// A table mapping names the DataTable.
adapter.TableMappings.Add( "Table ", "Suppliers ");

// Open the connection.
connection.Open();
Console.WriteLine( "The SqlConnection is open. ");

// Create a SqlCommand to retrieve Suppliers data.
SqlCommand command = new SqlCommand(
"SELECT SupplierID, CompanyName FROM dbo.Suppliers; ",
connection);
command.CommandType = CommandType.Text;

// Set the SqlDataAdapter 's SelectCommand.
adapter.SelectCommand = command;

// Fill the DataSet.
DataSet dataSet = new DataSet( "Suppliers ");
adapter.Fill(dataSet);

// Create a second Adapter and Command to get
// the Products table, a child table of Suppliers.
SqlDataAdapter productsAdapter = new SqlDataAdapter();
productsAdapter.TableMappings.Add( "Table ", "Products ");

SqlCommand productsCommand = new SqlCommand(
"SELECT ProductID, SupplierID FROM dbo.Products; ",
connection);
productsAdapter.SelectCommand = productsCommand;

// Fill the DataSet.
productsAdapter.Fill(dataSet);

// Close the connection.
connection.Close();
Console.WriteLine( "The SqlConnection is closed. ");

// Create a DataRelation to link the two tables
// based on the SupplierID.
DataColumn parentColumn =
dataSet.Tables[ "Suppliers "].Columns[ "SupplierID "];
DataColumn childColumn =
dataSet.Tables[ "Products "].Columns[ "SupplierID "];
DataRelation relation =
new System.Data.DataRelation( "SuppliersProducts ",
parentColumn, childColumn);
dataSet.Relations.Add(relation);
Console.WriteLine(


"The {0} DataRelation has been created. ",
relation.RelationName);
}
}

static private string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file.
return "Data Source=(local);Initial Catalog=Northwind; "
+ "Integrated Security=SSPI ";
}
}
}


[解决办法]
你连接到数据库,查询到相关的信息吗,返回一个结果集,之后就应该断开连接
[解决办法]
介意你多看下msdn
[解决办法]
1. DataReader 的定义是 "只进数据流 " ,意思是说,每个DataReader会占用一个通道,即数据连接. 所以每次用完后都需要关闭.
DataSet 是内存对象, 它的工作原理是,从数据库中取出数据保存到内存中, 取完后自动断开连接. 不需要Close

2. DataSet是中可以保存多张表, "数据库的一个副本,包含多张数据表 " ,可以这样理解.
DataSet可以像DataReader那样使用. 列名默认为数据库字段名.

[解决办法]
1、DataSet是local的,与connnection没有关系。
DataAdapter不用显示打开和关闭Connection,如果的在你使用之前,没有打开连接,DataAdapter会自动帮你打开连接,而且在使用完毕会自动关闭连接,如果在你使用之前已经打开连接,DataAdapter会使用这个连接,但使用完毕不会关闭连接,需要你自己显式关闭连接的

2、可以,先填充到一个命名的DataTable里,然后调用
SqlDataAdapter custAdapter = new SqlDataAdapter( "SELECT * FROM school ", con);
DataSet ds= new DataSet();
myAdapter.Fill(ds, "student ");
DataTable student = ds.Tables[ "student "];
string student_name = student[0][ "STUDENT_NAME "].ToString();

以上代码只是举个例子,没有测试,可以查看一下MSDN相关内容
[解决办法]
第一个:我做dataread的时候用完了需要read.close

请问如果要用dataset的话需要断开连接什么的么?或者关闭什么的么?
===============================================================
DataRead是独占数据库连接的,所以当你对数据操作完后需要调用其Close()方法,再关闭连接
DataSet是应用程序使用DataAdapter的Fill方法把数据库中的数据填充到了内存中(如果是B/S结构,则是Web服务器的内存中,如果是C/S结构,则是本机),而调用DataAdapter的Fill方法时会隐式地打开连接,但不会隐式地关闭连接,所以我们最好能手动打开关闭连接,数据填充到内存后和数据库已经关系了,所以没有DataSet的什么关闭方法


第二个问题:
我用dataread的时候就string username=read[ "username "].tostring()
我看过别人写的dt.table[ "** "][数字][数字]
这样来获取,我感觉挺麻烦的
请问dataset中能不能像dataread那样直接写字段名的方法呢 谢谢
==============================================================
可以,如果是强类型的数据集的话,甚至可以把数据库字段当做属性来使用
[解决办法]
DataSet 这个的 概念 要认真看看.msdn
[解决办法]
第一个:我做dataread的时候用完了需要read.close
********************
dataread是在线一条一条的向后读取,在读取完数据以前必须保持与数据库的链接。读完以后不仅需要read.close,还要关闭数据库链接。
dataset是读到内存中的,从数据库一次性读取数据到dataset的,dataset没有这样的关闭方法:dataset.close。但是读完数据以后你记得马上关闭数据库链接。

第二个问题:请问dataset中能不能像dataread那样直接写字段名的方法呢
***********************
字段名、数字都行的

热点排行