实验四文件和数据库访问技术训练Word文档下载推荐.docx

上传人:b****6 文档编号:16446708 上传时间:2022-11-23 格式:DOCX 页数:16 大小:169.48KB
下载 相关 举报
实验四文件和数据库访问技术训练Word文档下载推荐.docx_第1页
第1页 / 共16页
实验四文件和数据库访问技术训练Word文档下载推荐.docx_第2页
第2页 / 共16页
实验四文件和数据库访问技术训练Word文档下载推荐.docx_第3页
第3页 / 共16页
实验四文件和数据库访问技术训练Word文档下载推荐.docx_第4页
第4页 / 共16页
实验四文件和数据库访问技术训练Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

实验四文件和数据库访问技术训练Word文档下载推荐.docx

《实验四文件和数据库访问技术训练Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验四文件和数据库访问技术训练Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

实验四文件和数据库访问技术训练Word文档下载推荐.docx

publicclassTextFromFile

{

staticvoidMain(string[]args)

intnum=0;

intword=0;

stringFILE_NAME="

..\\..\\article.txt"

;

if(!

File.Exists(FILE_NAME))

Console.WriteLine(FILE_NAME+"

不存在"

);

Console.ReadLine();

return;

}

StreamReadersr=File.OpenText(FILE_NAME);

Stringinput;

while((input=sr.ReadLine())!

=null)

for(inti=0;

i<

input.Length;

i++)

if(input[i]=='

'

||input[i]=='

'

.'

word=0;

else

if(word==0)

word=1;

num++;

sr.Close();

StreamWritersw=File.AppendText(FILE_NAME);

sw.WriteLine("

单词个数:

"

+num);

Console.WriteLine("

统计完成!

sw.Close();

}

2、序列化训练

使用BinnaryFormatter进行序列化和反序列化。

创建Windows应用程序,名称为WindowsApplication。

设计表单Form1,界面如下图:

通过界面中的控件完成对如下类的序列化:

publicclassClassToSerialize

publicintid;

publicstringname;

[NonSerialized]

publicstringSex;

具体要求:

单击按钮“序列化”时,当文本框输入不全时,显示“信息输入不全”;

否则将所填信息序列化到文件“temp.data”中,并提示“序列化成功!

”。

单击按钮“反序列化”时,在表单的标签上显示结果,如下图:

思考:

为什么结果中没有性别信息?

代码的编写可参考P128—P129代码。

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Windows.Forms;

usingSystem.Runtime.Serialization;

usingSystem.Runtime.Serialization.Formatters.Binary;

namespaceWindowsFormsApplication

publicpartialclassForm1:

Form

publicForm1()

InitializeComponent();

[Serializable]

privatevoidbutton1_Click(objectsender,EventArgse)

ClassToSerializemyInfo=newClassToSerialize();

if(textBox1.Text==string.Empty||textBox2.Text==string.Empty)

MessageBox.Show("

请输入正确的信息!

myInfo.id=int.Parse(textBox1.Text);

myInfo.name=textBox2.Text;

if(radioButton2.Checked)

myInfo.Sex=radioButton2.Text;

myInfo.Sex=radioButton1.Text;

序列化成功!

FileStreamfileStream=newFileStream("

temp.dat"

FileMode.Create);

BinaryFormatterb=newBinaryFormatter();

b.Serialize(fileStream,myInfo);

fileStream.Close();

privatevoidbutton2_Click(objectsender,EventArgse)

FileMode.Open,FileAccess.Read,FileShare.Read);

myInfo=b.Deserialize(fileStream)asClassToSerialize;

label4.Text="

反序列化的结果为:

+myInfo.id+"

"

+myInfo.name+"

+myInfo.Sex;

3、数据库读取训练

本实验中使用的连接字符串如下:

DataSource=.\SQLEXPRESS;

AttachDbFilename=|DataDirectory|NORTHWND.MDF;

IntegratedSecurity=True;

UserInstance=True"

1)使用DataAdapter和DataSet访问数据库

创建Windows应用程序,名称为DataBaseLx。

当点击“取数据”按钮时,效果如下图(读取数据库“NORTHWND.MDF”中的表“Employees”的三列信息):

当点击“生成XML”按钮后,效果如下:

“取数据”按钮中的代码参考P144。

usingSystem.Data.SqlClient;

namespaceDataBaseLx

DataSetds=newDataSet();

SqlConnectionmyConnection=newSqlConnection(@"

SqlDataAdaptercustomersTableAdapter=newSqlDataAdapter("

SelectEmployeeID,FirstName,LastNameFROMEmployees"

myConnection);

customersTableAdapter.Fill(ds,"

Employees"

dataGridView1.DataSource=ds.Tables[0];

button2.Enabled=true;

button1.Enabled=false;

ds.Tables[0].WriteXml("

Employees.xml"

XmlWriteMode.IgnoreSchema);

生成Employees.xml文件!

button2.Enabled=false;

privatevoidForm1_Load(objectsender,EventArgse)

}

2)使用Command和DataReader访问数据库

在项目DataBaseLx中添加表单Form2,运行时显示效果如下图,单击列的头部,观察能否排序。

参考P149代码。

publicpartialclassForm2:

publicForm2()

privatevoidForm2_Load(objectsender,EventArgse)

SqlCommandmyCommand=newSqlCommand("

myConnection.Open();

SqlDataReadermyReader=myCommand.ExecuteReader();

BindingSourcebs=newBindingSource();

bs.DataSource=myReader;

dataGridView1.DataSource=bs;

myReader.Close();

myConnection.Close();

 

3)存储过程的使用

在项目DataBaseLx中添加表单Form3,要求使用数据库“NORTHWND.MDF”中的存储过程“TenMostExpensiveProducts”查询最贵的10种产品,结果显示在datagridveiw上。

运行效果如下图:

参考P153代码。

publicpartialclassForm3:

publicForm3()

privatevoidForm3_Load(objectsender,EventArgse)

SelectTenMostExpensiveProducts,UnitPriceFROMProducts"

SqlDataAdaptermySqlDataAdapter=newSqlDataAdapter();

mySqlDataAdapter.SelectCommand=newSqlCommand();

mySqlDataAdapter.SelectCommand.Connection=myConnection;

mySqlDataAdapter.SelectCommand.CommandText="

TenMostExpensiveProducts"

mySqlDataAdapter.SelectCommand.CommandType=CommandType.StoredProcedure;

DataSetmyDataSet=newDataSet();

mySqlDataAdapter.Fill(myDataSet,"

Products"

dataGridView1.DataSource=myDataSet.Tables["

];

4)使用视图进行排序和筛选

在项目DataBaseLx中添加表单Form4,界面设计如下图:

运行时出现如下画面:

在第一个列表框中显示从Employees表中读取的Title字段,用于筛选的条件;

第二个列表框中存放条目“EmployeeID,FirstName,LastName,Title”,用于排序的字段;

通过单选按钮进行排序方式的选择。

点击“确定”按钮后,在下方的DataGridView中显示所选的Title的记录,并按所选的字段按指定的方式进行排序。

排序和筛选功能的实现参考P146代码。

publicpartialclassForm4:

publicForm4()

privatevoidForm4_Load(objectsender,EventArgse)

SqlDataAdaptermyAdapter=newSqlDataAdapter("

SelectdistincttitlefromEmployees"

myAdapter.Fill(ds,"

Title"

comboBox1.DataSource=ds.Tables["

comboBox1.DisplayMember="

SelectEmployeeID,FirstName,LastName,TitlefromEmployees"

dataGridView1.DataSource=ds.Tables["

].DefaultView;

ds.Tables["

].DefaultView.RowFilter="

Title='

+comboBox1.Text+"

'

stringmode="

Asc"

mode="

Desc"

if(comboBox2.Text!

=string.Empty)

].DefaultView.Sort=comboBox2.Text+mode;

【4】思考题

1、文件流的参数有哪几个?

2、什么是序列化和反序列化?

3、比较使用DataSet和DataReader来访问数据过程。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1