1)如何把执行的SQL语句返回的结果集赋值给多维数组?
2)我用了此方法可以,但是有点问题,就是数组初始化的问题。另外我不想用System.Data.SqlClient.SqlDataReader类的Read()方法逐个赋值,请问有没有更简单执行效率更高的方法?我的程序如下:
System.Data.SqlClient.SqlCommand myCMD;
myCMD = new System.Data.SqlClient.SqlCommand("select codelen from codelevl where tblid='10' " , myConnection);
System.Data.SqlClient.SqlDataReader myReader =myCMD.ExecuteReader();
object[] oj=new object[5];//如果我不知道结果集的记录数,数组声明为object[] oj;但下面oj[i]依次赋值时报“用了没有初始化的数组错误”,请问如何解决这一问题?
int i=0;
while (myReader.Read())
{
oj[i]=(myReader.GetValue(0));
i++;
}
肯请您的帮助,谢谢!!
2)我用了此方法可以,但是有点问题,就是数组初始化的问题。另外我不想用System.Data.SqlClient.SqlDataReader类的Read()方法逐个赋值,请问有没有更简单执行效率更高的方法?我的程序如下:
System.Data.SqlClient.SqlCommand myCMD;
myCMD = new System.Data.SqlClient.SqlCommand("select codelen from codelevl where tblid='10' " , myConnection);
System.Data.SqlClient.SqlDataReader myReader =myCMD.ExecuteReader();
object[] oj=new object[5];//如果我不知道结果集的记录数,数组声明为object[] oj;但下面oj[i]依次赋值时报“用了没有初始化的数组错误”,请问如何解决这一问题?
int i=0;
while (myReader.Read())
{
oj[i]=(myReader.GetValue(0));
i++;
}
肯请您的帮助,谢谢!!
用list 比较方便.
SqlConnection sqlconn = new SqlConnection("server=(local)\\JAMESLEE;Integrated Security=SSPI;database=Northwind;");
SqlCommand cmd = new SqlCommand("select firstname from employees",sqlconn); try
{
sqlconn.Open();
SqlDataReader dr = cmd.ExecuteReader();
object[] ob = new object[5];
int i =0;
while (dr.Read())
{
//ob[i] = dr.GetValue(0);dr[0],dr["Firstname"]
//可以多试几种访问的方法。
ob[i] = dr.GetSqlString(0);
i++;
if (i==5) break;
}
for(int j=0;j<5;j++)
MessageBox.Show(ob[j].ToString());
}
catch(SqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
sqlconn.Close(); }
SqlCommand cmd = new SqlCommand("select firstname from employees;select firstname from employees",sqlconn);
try
{
sqlconn.Open();
SqlDataReader dr = cmd.ExecuteReader();
int count_rows = 0;
while (dr.Read())
{
count_rows++; //先遍历一次整个表,得到总的记录行数
}
object[] ob = new object[count_rows]; //动态定义数组 int i= 0;
dr.NextResult();
while (dr.Read())
{
ob[i] = dr.GetValue(0);
i++;
}
for(int j=0;j<count_rows;j++)
MessageBox.Show(ob[j].ToString());
}
读入两次同样的表,很占内存的。呵呵,没办法,C#中好像没有可以直接取得总记录数的函数或方法可调用,所以只能这样了。请高手出来!!
int[,] i = (int[,])Array.CreateInstance(typeof(int),3,4);
动态创建一维
int[] i1 = (int[])Array.CreateInstance(typeof(int),4);
int test1 =i.GetUpperbound(0);//下限
int[] lengths={10,4};Decimal[,] quarter = (Decimal[,])Array.CreateInstance(typeof(Decimal),lengths,lower);
int a = quarter.GetLowerBound(0);
int b = quarter.GetUpperBound(0);
for(int year = a;year <=b;year++)
{
MessageBox.Show(year.ToString());
for(int quarter1=quarter.GetLowerBound(1);quarter1<=quarter.GetUpperBound(1);quarter1++ )
{
MessageBox.Show(quarter[year,quarter1].ToString());
}
}
然后再用刚才的方法传变量进去动态创建
Object[] ob = new Object[5];
int i=0;
ob[i]=;
这语法是错误码的
而且你只要不读取多个表
用个二维数组就可以了,只指定它的行和列
多个表就要另行考虑了。
string strConnection = System.Configuration.ConfigurationSettings.AppSettings["SqlConnectionString"].ToString();
Aifull.AifullCore.Data.DataManage dm = new Aifull.AifullCore.Data.DataManage(strConnection);
try
{
DataSet ds = dm.getDataSet(strSQL);
int num = ds.Tables[0].Rows.Count;
object[] otest = new object[num];
for(int i=0;i<num;i++)
{
otest[i] = ds.Tables[0].Rows[i][0];
}
}
catch(Exception ex)
{
string message = "";
}
foreach(int num in i)
{
if(num=="你想要找的数")
}
不过加到Arraylist中真的很好