请问我,在某按妞onclick事件中,如何调用,我的调用方法对吗,还有调用了如何读取dataset中的字段值protected void btnsavesend_Click(object sender, EventArgs e)
{Conn myconn = new Conn();
myconn.Open();
string sel = "select * from aa";
SqlDataAdapter aCommand = new SqlDataAdapter(sel, myconn.ChangeType());
aCommand.SelectCommand.CommandType = CommandType.Text;
SqlDataReader datareader = aCommand.SelectCommand.ExecuteReader();
if (datareader.Read() == true)
{
GetDataSet(datareader);//请问是这样调用的吗?
datareader.Close();
}
myconn.Close();
myconn.Dispose();
}
string aa=DataSet ....//怎么取得某字段值?
----------------------------------------------------
public static DataSet GetDataSet(IDataReader reader)
{
DataTable table = new DataTable();
int fieldCount = reader.FieldCount;
for (int i = 0 ; i < fieldCount ; i++)
{
table.Columns.Add(reader.GetName(i) , reader.GetFieldType(i));
}
table.BeginLoadData();
object[] values = new object[fieldCount];
while (reader.Read())
{
reader.GetValues(values);
table.LoadDataRow(values , true);
} table.EndLoadData();
DataSet ds = new DataSet();
ds.Tables.Add(table);
return ds;
}
{Conn myconn = new Conn();
myconn.Open();
string sel = "select * from aa";
SqlDataAdapter aCommand = new SqlDataAdapter(sel, myconn.ChangeType());
aCommand.SelectCommand.CommandType = CommandType.Text;
SqlDataReader datareader = aCommand.SelectCommand.ExecuteReader();
if (datareader.Read() == true)
{
GetDataSet(datareader);//请问是这样调用的吗?
datareader.Close();
}
myconn.Close();
myconn.Dispose();
}
string aa=DataSet ....//怎么取得某字段值?
----------------------------------------------------
public static DataSet GetDataSet(IDataReader reader)
{
DataTable table = new DataTable();
int fieldCount = reader.FieldCount;
for (int i = 0 ; i < fieldCount ; i++)
{
table.Columns.Add(reader.GetName(i) , reader.GetFieldType(i));
}
table.BeginLoadData();
object[] values = new object[fieldCount];
while (reader.Read())
{
reader.GetValues(values);
table.LoadDataRow(values , true);
} table.EndLoadData();
DataSet ds = new DataSet();
ds.Tables.Add(table);
return ds;
}
protected void btnsavesend_Click(object sender, EventArgs e)
{Conn myconn = new Conn();
myconn.Open();
string sel = "select * from aa";
//SqlDataAdapter aCommand = new SqlDataAdapter(sel, myconn.ChangeType());
//aCommand.SelectCommand.CommandType = CommandType.Text;
// SqlDataReader datareader = aCommand.SelectCommand.ExecuteReader();
SqlComman cmd=new SqlCommand(sel,myconn);
myconn.Open();//如果按照你的写法数据库不需要打开关闭,因为SqlDataAdapter会自动打开和关闭
SqlDataReader dr=cmd.ExecuteReader();
if(dr.Read()) // if (datareader.Read() == true)
{
DataSet ds=GetDataSet(dr);//定义一个DataSet 对象接受执行结果
dr.Close();
string aa=ds.tables[0].Rows[i]["字段名"];//取值,i表示行按照自己的需要写,字段名写表中存在的字段
}
myconn.Close();
}
//string aa=DataSet ....//怎么取得某字段值? ----------------------------------------------------
public static DataSet GetDataSet(IDataReader reader)
{
DataTable table = new DataTable();
int fieldCount = reader.FieldCount;
for (int i = 0 ; i < fieldCount ; i++)
{
table.Columns.Add(reader.GetName(i) , reader.GetFieldType(i));
} table.BeginLoadData();
object[] values = new object[fieldCount];
while (reader.Read())
{
reader.GetValues(values);
table.LoadDataRow(values , true);
} table.EndLoadData();
DataSet ds = new DataSet();
ds.Tables.Add(table);
return ds;
}
DataSet ds=new DataSet();
string value=ds.Table[0].Rows[0]["这里写上你要取值的列的名字"].Tostring();Table[0]是指DataSet里的第一个表内容里面的数据,Rows[0]是指第一行,然后后面跟的["列名"]就是你要取值的列里的值
这句报错,说"在位置0处没有任何行"
你说的读取dataset中字段的值,应该是读取datatable中的值吧?
其实你要取值的话,可以不用那个函数,不用datareader就可以了
try
{
string str = "SELECT * FROM 表 where...";
SqlDataAdapter da = new SqlDataAdapter(str, oracleconn);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
string result
foreach (DataRow dr in dt.Rows)
{
result = dr[/*索引*/].ToString();//这就是某字段的值,我取了整个表的,你可以自己改一下
} }
catch (SqlException ee)
{
MessageBox.Show(ee.Message.ToString());
}