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