数据库数据查询

数据库数据查询
数据库数据查询

实验九数据库数据查询

一.实验目的:

理解并掌握利用.net和Delphi、Java(JBuilder或Eclipse)等编程平台进行数据库访问的基本过程,熟悉数据库访问方法。二.实验属性:

设计性。

三.实验仪器设备及器材:

1.安装有windows操作系统计算机。

2.安装有Oracle11g和SQL Server的计算机。

3.安装有Visual Studio .net和Java编译器(eclipse、

Netbean等)的编译器。

4.计算机具备网络环境。

四.实验要求

1.预习数据库访问的方式:

i.对于Delphi通过BDE、ODBC和ADO三种访问方法。

ii.对于.net编译环境连接Oracle需要熟练掌握数据库连接方法:

OracleConnection。

iii.对于.net编译环境要熟练掌握三种数据库连接方法:SqlConnection(或者OleDbConnection,或者OdbcConnection);

SqlCommand(或者OleDbCommand,或者OdbcCommand);

SqlDataReader(或者OleDbDataReader,或者OdbcDataReader);

iv.对于java使用JDBC进行数据库连接。

1.调用Driver.forName方法加载驱动程序。

2.调用DriverManager对象的getConnection()方法,

获得一个Connection对象。

3.创建一个Statement对象,准备一个SQL语句,这

个SQL语句是Statement对象(立即执行的语句)、

PreparedStatement语句(预编译的语句)或

CallableStatement(存储过程中调用的语句)。

4.调用executeUpdate()等方法执行SQL语句,不返

回ResultSet对象的结果。

5.对返回的ResultSet对象进行显示等相应的处理。

2.熟悉掌握数据库数据查询的组件:

a)对于.net和Delphi编译环境

ADO组件栏的组件:TADOConnection、TADOTable、TADOQuery、TADOStoredProc

BDE组件栏的组件:TTable、TQuery、TStoredProc、TDatabase

DataAccess组件栏的组件:TdataSource

DataControl组件栏的组件:TDBGrid、TDBText、

TDBMemo、TDBEdit、

TDBImage、TDBListBox、

TDBCheckBox、TDBComboBox 等数据库操作常用组件的使用。

b)对于.net环境下的C#语言数据库编程,熟练掌握三种数据库连接方法。数据库操作类的使用,如:DataSet、SqlDataAdapter、dataGridView等。

c)对于Java(JBuilder或Eclipse)编译环境利用JDBC进行数据库连接。数据库连接后使用Database、QueryDataSet、TableDataSet、DataSetView等类进行数据库操作。

2. 接着上次的实验进行。

3.实验中要求完成如下步骤:

a.复合查询。

给定一定的查询字段,有用户进行选择进行查询。注

意使用模糊匹配。

b.动态查询。

给出数据库的所有字段,有用户选择后进行查询。对

于不同的字段类型,由程序自动给出操作运算符,如

果用户选择了一个数据类型是char型的字段,操作运

算符只能是“=”,“< >”。注意使用模糊匹配。

4.实验后提交程序清单和实验报告。

五、实验步骤

在该对话框类Form1中定义静态类用于数据库的操作static public LinkDataBase ldb = new LinkDataBase();

点击登录按钮是所运行的操作

private void button1_Click(object sender, EventArgs

e)

{

if(textBox1.Text.Trim()=="")

{

MessageBox.Show("计算机名不能为空!!!!!","提示",MessageBoxButtons.OK);

return;

}

ldb.pcomputername = textBox1.Text.Trim();

if (ldb.Link() == "连接失败")

return;

if (ldb.login(textBox2.Text.Trim(), textBox3.Text.Trim()))

{

this.Hide();

Query f = new Query();

f.ShowDialog();

this.Close();

}

}

3、数据库查询界面及其中操作的设置

界面设计:

作用于“查询某学生的信息”界面的关键代码:

private void button1_Click(object sender, EventArgs e)

{

if (textBox1.Text != "")

{

https://www.360docs.net/doc/473763909.html,mandText = @"SELECT *

FROM Student

WHERE Sname LIKE @name";

Form1.ldb.pcmd.Parameters.Clear();

Form1.ldb.pcmd.Parameters.Add("@name",

SqlDbType.VarChar, 8).Value =textBox1.Text.Trim();

Form1.ldb.Show(dataGridView1);

statusStrip1.Items[1].Text=("共查到"+(dataGridView1.RowCount-1).ToString()+"条记录");

}

else

MessageBox.Show("姓名不能为空!!!");

}

作用于“按选择条件查询”界面的关键代码

private void button2_Click(object sender, EventArgs e)

{

string str = "";

if (comboBox2.Text == "" || comboBox1.Text == "" || textBox2.Text=="")

{ MessageBox.Show("不能为空");

return; }

switch(log)

{case 1:

str = "";

switch(comboBox1.Text)

{case "成绩大于":str = ">";

break;

case "成绩大于等于":str=">=";

break;

case "成绩小于":str = "<";

break;

case "成绩小于等于":str = "<=";

break;

case "成绩等于":str = "=";

break;

case "成绩不等于":str = "!=";

break;

default: MessageBox.Show("输入有误");

return; }

str = @"SELECT Sname 姓名,Cname 课程名,Grade

成绩

FROM Student,SC,Course

WHERE Student.Sno=SC.Sno And https://www.360docs.net/doc/473763909.html,o=https://www.360docs.net/doc/473763909.html,o AND

Grade"+str+"@grade";

https://www.360docs.net/doc/473763909.html,mandText = str;

Form1.ldb.pcmd.Parameters.Clear();

Form1.ldb.pcmd.Parameters.Add("@grade",SqlDbType. VarChar,10).Value=textBox2.Text.Trim();

break;

case 2:

str = "";

switch(comboBox1.Text.Trim()) {case "在":str = "=";

break;

case "不在":str = "!=";

break;

default: MessageBox.Show("输入有误");

return; }

str = @"SELECT Sno 学号,Sname 姓名,Sdept 院系

FROM Student

WHERE Sdept"+str+"@dept";

https://www.360docs.net/doc/473763909.html,mandText = str;

Form1.ldb.pcmd.Parameters.Clear();

Form1.ldb.pcmd.Parameters.Add("@dept",SqlDb Type.VarChar,15).Value=textBox2.Text.Trim();

break;

case 3:

str = "";

switch(comboBox1.Text.Trim())

{

case "年龄大于": str = ">";break;

case "年龄大于等于": str = ">="; break;

case "年龄小于": str = "<";break;

case "年龄小于等于": str = "<=";break;

case "年龄等于": str = "=";break;

case "年龄不等于": str = "!=";break;

default: MessageBox.Show("输入有误");return;

}

str = @"SELECT *

FROM Student

WHERE Sage"+str+"@age";

https://www.360docs.net/doc/473763909.html,mandText = str;

Form1.ldb.pcmd.Parameters.Clear();

Form1.ldb.pcmd.Parameters.Add("@age",SqlDbType.V arChar,3).Value=textBox2.Text.Trim();

break;

case 4:

str = "";

switch(comboBox1.Text.Trim())

{

case "选修了": str = "=";

break;

case "未选修": str = "!=";

break;

default: MessageBox.Show("输入有误");

return;

}

str = @"SELECT Student.Sno 学号,Sname 姓名,Cname 课程名

FROM Student,SC,Course

WHERE Student.Sno=SC.Sno AND https://www.360docs.net/doc/473763909.html,o=https://www.360docs.net/doc/473763909.html,o AND Cname"+str+"@name";

https://www.360docs.net/doc/473763909.html,mandText = str;

Form1.ldb.pcmd.Parameters.Clear();

Form1.ldb.pcmd.Parameters.Add("@name",SqlDbType.V arChar,10).Value=textBox2.Text.Trim();

break;

}

Form1.ldb.Show(dataGridView2);

statusStrip1.Items[1].Text=("共查到"+(dataGridView2.RowCount-1).ToString()+"条记录");

}

作用于“查询某学生的选课情况”界面的关键代码

private void button3_Click(object sender, EventArgs

e)

{https://www.360docs.net/doc/473763909.html,mandText = @"SELECT Cno 课程号,Cname 课程名,Cpno 先修课程号,Ccredit 学分

FROM Course

WHERE Cno IN (

SELECT Cno

FROM SC

WHERE Sno IN (

SELECT Sno

FROM Student WHERE

Sname=@name

)

)";

Form1.ldb.pcmd.Parameters.Clear();

Form1.ldb.pcmd.Parameters.Add("@name",SqlDbType.V arChar,10).Value=textBox3.Text.Trim();

Form1.ldb.Show(dataGridView3);

statusStrip1.Items[1].Text = "共选修"+(dataGridView3.RowCount-1).ToString()+"门课程";

}

相关主题
相关文档
最新文档