您的位置:首页 > 其它

ado.net基本操作复习

2011-03-30 22:35 295 查看
publicvoidProcessRequest(HttpContextcontext)
{
context.Response.ContentType="text/html";
//建立一个数据库的连接
//打开数据库
//建立一个数据库的命令
//输入命令的文本
//执行这个命令
//得到其结果
//对结果进行处理
//...还是linq方便
SqlConnectionconn=newSqlConnection("DataSource=.;InitialCatalog=图库;IntegratedSecurity=True");
try
{

conn.Open();
context.Response.Write("成功打开数据库:图库");
SqlCommandcmd=conn.CreateCommand();
cmd.CommandText="select文件名from图片库";

SqlDataReaderreader=cmd.ExecuteReader();

while(reader.Read())
{
context.Response.Write(reader.GetString(reader.GetOrdinal("文件名")));
context.Response.Write("<br/>");
}
}
catch(Exceptione)
{

context.Response.Write(e.Message);
}
finally{
conn.Close();
}
}
其实只是想得到这个文件名字段所包含的字符串集合,一开始在第一句中
context.Response.ContentType="text/html";
写成了"image/jpeg",结果文本显示出来总有问题




http报文的类型不对,显示自然不正确!

GetOrdinal,Ordinal:

ordinalnumeral序数词;序数

ordinaltype[计]顺序类型;有序型;[计]序数型式;[计]序数类型

Ordinalnumbers序数词;序数





如果要得到一个时间类型的字符串,需要改变一下获取数据的方式:
publicvoidProcessRequest(HttpContextcontext)
{
context.Response.ContentType="text/html";
SqlConnectionconn=newSqlConnection("DataSource=.;InitialCatalog=图库;IntegratedSecurity=true");
conn.Open();
SqlCommandcmd=conn.CreateCommand();
cmd.CommandText="select创建时间from图片库";
varreader=cmd.ExecuteReader();
while(reader.Read())
{
context.Response.Write(reader.GetSqlDateTime(0));
context.Response.Write("<br/>");
}
conn.Close();
}

紫色部分,因为读取的是一个时间类型的数据,所以需要使用GetSqlDateTime方法来获取,因为只有一个字段,所以后面的参数用了0

改成1呢?自然不行,因为读取出来的数据只有1列

索引超出了数组界限。

说明:[/b]执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息:[/b]System.IndexOutOfRangeException:索引超出了数组界限。

源错误:[/b]

行23:while(reader.Read())
行24:{
行25:context.Response.Write(reader.GetSqlDateTime(1));
行26:context.Response.Write("<br/>");
行27:}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: