private void FillDataTable()
{ DataTable _dtProducts = new DataTable();
DataRow dr; _dtProducts.Columns.Add(new DataColumn("ProductID", typeof(int)));
_dtProducts.Columns.Add(new DataColumn("ProductName", typeof(string)));
_dtProducts.Columns.Add(new DataColumn("UnitPrice", typeof(decimal))); string conn = "server=(local);database=northwind;user id=sa;password=password;Trusted_Connection=false";
SqlConnection cn = new SqlConnection(conn);
string str = "select * from Products";
SqlCommand cmd = new SqlCommand(str, cn);
cn.Open();
SqlDataReader DR = cmd.ExecuteReader(); if (DR.Read())
{
dr = _dtProducts.NewRow();
dr[0] = DR["ProductID"];
dr[1] = DR["ProductName"];
dr[5] = DR["UnitPrice"]; //但在northwind数据库里的Products的第6列 (sql2000)
_dtProducts.Rows.Add(dr);
} DR.close();
cn.Close();
}
编辑时的提示:无法找到列 5,但在north数据库里的Products的第6列有的呀
不知道错在那里,以前用dataset比较多,熟悉datatable的请不吝赐教!!
{ DataTable _dtProducts = new DataTable();
DataRow dr; _dtProducts.Columns.Add(new DataColumn("ProductID", typeof(int)));
_dtProducts.Columns.Add(new DataColumn("ProductName", typeof(string)));
_dtProducts.Columns.Add(new DataColumn("UnitPrice", typeof(decimal))); string conn = "server=(local);database=northwind;user id=sa;password=password;Trusted_Connection=false";
SqlConnection cn = new SqlConnection(conn);
string str = "select * from Products";
SqlCommand cmd = new SqlCommand(str, cn);
cn.Open();
SqlDataReader DR = cmd.ExecuteReader(); if (DR.Read())
{
dr = _dtProducts.NewRow();
dr[0] = DR["ProductID"];
dr[1] = DR["ProductName"];
dr[5] = DR["UnitPrice"]; //但在northwind数据库里的Products的第6列 (sql2000)
_dtProducts.Rows.Add(dr);
} DR.close();
cn.Close();
}
编辑时的提示:无法找到列 5,但在north数据库里的Products的第6列有的呀
不知道错在那里,以前用dataset比较多,熟悉datatable的请不吝赐教!!
{
string conn = "server=(local);database=northwind;user id=sa;password=password;Trusted_Connection=false";
string str = "select * from Products"; using (SqlConnection conn = new SqlConnection(conn))
{
SqlDataAdapter da = new SqlDataAdapter(str, conn);
da.SelectCommand.CommandType = CommandType.Text;
da.SelectCommand.ExecuteReader();
DataTable tbl = new DataTable();
da.Fill(tbl);
return tbl;
}
}这样填允 DataTable
{ DataTable _dtProducts = new DataTable();
DataRow dr; _dtProducts.Columns.Add(new DataColumn("ProductID", typeof(int)));
_dtProducts.Columns.Add(new DataColumn("ProductName", typeof(string)));
_dtProducts.Columns.Add(new DataColumn("UnitPrice", typeof(decimal))); string conn = "server=(local);database=northwind;user id=sa;password=password;Trusted_Connection=false";
SqlConnection cn = new SqlConnection(conn);
string str = "select * from Products";
SqlCommand cmd = new SqlCommand(str, cn);
cn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
///DataTable dt=new DataTable("name")
da.Fill( _dtProducts );
return _dtProducts
}
还是不行,提示,"已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"
{ DataTable _dtProducts = new DataTable();
DataRow dr; _dtProducts.Columns.Add(new DataColumn("ProductID", typeof(int)));
_dtProducts.Columns.Add(new DataColumn("ProductName", typeof(string)));
_dtProducts.Columns.Add(new DataColumn("UnitPrice", typeof(decimal))); string conn = "server=(local);database=northwind;user id=sa;password=password;Trusted_Connection=false";
SqlConnection cn = new SqlConnection(conn);
string str = "select * from Products";
SqlCommand cmd = new SqlCommand(str, cn);
cn.Open();
SqlDataReader DR = cmd.ExecuteReader(); if (DR.Read())
{
dr = _dtProducts.NewRow();
dr[0] = DR["ProductID"];
dr[1] = DR["ProductName"];
//dr[5] = DR["UnitPrice"]; //但在northwind数据库里的Products的第6列 (sql2000)
dr[2] = DR["UnitPrice"];
_dtProducts.Rows.Add(dr);
} DR.close();
cn.Close();
}
应该这样,楼主可能是大意了。
-----------〉
_dtProducts只有3列啊,怎么会有第五列,所以应该是dr[2]=DR["UnitPrice"]; dr[5] = DR["UnitPrice"]; //但在northwind数据库里的Products的第6列 (sql2000) --------〉DR["UnitPrice"]这个已经根据字段取值了,不用管是第几列