版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。
通过COM来操作Excel操作,请参看第21.2节
在第19.3.4节【连接Excel】中已经讲述了如何连接Excel。剩下的操作就和前面几节操作Access数据库一样。
注意:Excel不支持删除一行记录,使用SQL的delete语句会返回错误。如果需要在Excel中删除一行记录,请参看第21.2.4节。
本节使用到的样例Excel表是从北风数据库中产品表的部分数据:
图19-38 产品表信息
【例 19.17】【项目:code19-017】产品信息管理。
OleDbConnection conn;
private void Form1_Load(object sender, EventArgs e)
{
conn = new OleDbConnection();
//32位office使用以下语句
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\\lessons\\Northwind.xlsx;Extended Properties=‘Excel 8.0; HDR=YES;'";
conn.Open();
//64位office使用以下语句,而且程序要编译为64位
//conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\lessons\\Northwind.xlsx;Extended Properties='Excel 12.0 XML;HDR=YES;'";
//conn.Open();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
conn.Close();
}
//查询所有数据
private void btnQueryAll_Click(object sender, EventArgs e)
{
string sql = "select * from [产品$]";
OleDbCommand command = new OleDbCommand(sql, conn);
OleDbDataReader reader = command.ExecuteReader();
int fieldCount = reader.FieldCount;
string info = "";
if( reader.HasRows)
{
string strtemp = "";
while(reader.Read())
{
strtemp = "";
for (int i = 0; i < fieldCount; i++)
strtemp += reader[i] + " ";
strtemp += "\r\n";
info += strtemp;
}
}
reader.Close();
TextBox1.Text = info;
}
//查询单价大于30的数据
private void btnQuery_Click(object sender, EventArgs e)
{
string sql = "select * from [产品$] where 单价>30";
OleDbCommand command = new OleDbCommand(sql, conn);
OleDbDataReader reader = command.ExecuteReader();
int fieldCount = reader.FieldCount;
string info = "";
if(reader.HasRows)
{
string strtemp = "";
while(reader.Read())
{
strtemp = "";
for (int i = 0; i < fieldCount; i++)
strtemp += reader[i] + " ";
strtemp += "\r\n";
info += strtemp;
}
}
reader.Close();
TextBox1.Text = info;
}
//增加数据
private void btnAdd_Click(object sender, EventArgs e)
{
string sql = "insert into [产品$] values('奶酪','每箱24瓶',55,79,0)";
OleDbCommand command = new OleDbCommand(sql, conn);
try
{
command.ExecuteNonQuery();
MessageBox.Show("添加数据成功!");
}
catch(Exception ex)
{
MessageBox.Show("添加数据失败:" + ex.Message);
}
}
//修改数据
private void btnEdit_Click(object sender, EventArgs e)
{
string sql = "update [产品$] set 产品名称='温馨奶酪',单价=80 where 产品名称='奶酪'";
OleDbCommand command = new OleDbCommand(sql, conn);
try
{
command.ExecuteNonQuery();
MessageBox.Show("修改数据成功!");
}
catch (Exception ex)
{
MessageBox.Show("修改数据失败:" + ex.Message);
}
}
运行结果如下图所示:
图19-39 列出产品信息
如果遇到已经安装了64位数据库引擎,但是仍然提示:
图19-40 提示未注册OLEDB12.0
请在项目属性【生成】|【目标平台】处选择X86。
图19-41 设置生成目标平台
学习更多vb.net知识,请参看vb.net 教程 目录
学习更多C#知识,请参看C#教程 目录