比较无奈的一个选择,上课老师要求必须使用Mysql,而我又比较喜欢用VS,所以,就又过了这样一个蹩脚的组合……
编程语言:C#;
使用软件:VS2008,Mysql 5.0,mysql-connector-net-5.0.9,MySQL.VisualStudio(要先装mysql-connector-net,后装MySQL.VisualStudio);
在这里实际上使用了一种偷懒的做法,使用Mysql提供的类库,可以在代码中直接使用Mysql.Data.*。
针对几个模块的不同方法:
一,登陆的验证:
没有见识过真正的用户名密码验证时怎么做的,我使用了比较笨的办法:
Login
1
MySqlConnection conn
=
new
MySqlConnection(defvalues.constr);
2
conn.Open();
3
//
读取所输入的用户名和密码
4
MySqlCommand comm
=
conn.CreateCommand();
5
if
(radioButton1.Checked)
6
{
7
string
sql
=
"
SELECT aname,pass FROM xuanke.admin WHERE(aname='
"
+
textBox1.Text
+
"
')
"
;
8
comm.CommandText
=
sql;
9
try
10
{
11
MySqlDataReader datar
=
comm.ExecuteReader();
12
13
14
//
判断是否存在输入的用户
15
16
if
(
!
datar.HasRows)
17
{
18
MessageBox.Show(
"
用户名不存在,请重新输入!
"
);
19
textBox1.Focus();
20
return
;
21
}
22
23
24
//
读取数据库的内容,并与输入的进行比较;
25
while
(datar.Read())
26
{
27
//
判断用户输入是否正确
28
if
(datar[
"
pass
"
].ToString().Trim()
!=
textBox2.Text.Trim())
29
{
30
MessageBox.Show(
"
用户密码不正确,请重新输入!
"
);
31
textBox2.Focus();
32
return
;
33
}
34
35
else
36
{
37
AdminLogin f1
=
new
AdminLogin();
38
f1.info
=
textBox1.Text.Trim();
39
f1.ShowDialog();
40
Close();
41
42
}
43
44
}
45
}
46
catch
(Exception ex)
47
{
48
MessageBox.Show(
"
出现错误,错误原因为
"
+
ex.Message,
49
"
系统提示:
"
, MessageBoxButtons.OK, MessageBoxIcon.Error);
50
}
51
52
53
}
先把用户名和密码从表中选出来,然后,持有用户名,把键入的密码在查询结果查询,验证。
这里关于获取数据的方法,就是利用command吸收了sqlstr,然后使用command.ExecuteReader();返回的DataReader,利用这个里面提供的索引来获取。
我觉得这里返回给DataReader的应该也是一个表,可以根据不同的column来读取不同的值。
二,根据学号查询学生信息
search
1
private
void
GetData(
string
selectCommand, BindingSource bd)
2
{
3
try
4
{
5
//
Specify a connection string. Replace the given value with a
6
//
valid connection string for a Northwind SQL Server sample
7
//
database accessible to your system.
8
String connectionString
=
9
"
Database=xuanke;Data Source=localhost;User Id=root;Password=tjucfsc4
"
;
10
11
//
Create a new data adapter based on the specified query.
12
MySqlDataAdapter dataAdapter
=
new
MySqlDataAdapter(selectCommand, connectionString);
13
14
//
Create a command builder to generate SQL update, insert, and
15
//
delete commands based on selectCommand. These are used to
16
//
update the database.
17
MySqlCommandBuilder commandBuilder
=
new
MySqlCommandBuilder(dataAdapter);
18
19
//
Populate a new data table and bind it to the BindingSource.
20
DataTable table
=
new
DataTable();
21
table.Locale
=
System.Globalization.CultureInfo.InvariantCulture;
22
dataAdapter.Fill(table);
23
bd.DataSource
=
table;
24
25
26
27
}
28
catch
(Exception ex)
29
{
30
MessageBox.Show(
"
出现错误,错误原因为
"
+
ex.Message,
31
"
系统提示:
"
, MessageBoxButtons.OK, MessageBoxIcon.Error);
32
}
33
}
34
private
void
button3_Click(
object
sender, EventArgs e)
35
{
36
dataGridView4.DataSource
=
bindingSource1;
37
if
(radioButton2.Checked)
38
{
39
string
str
=
"
select * from xuanke.students where sname=\
""
+ textBox1.Text.Trim() +
"
\
"
;
"
;
40
GetData(str, bindingSource1);
41
}
42
43
else
if
(radioButton1.Checked)
44
{
45
string
str
=
"
select * from xuanke.students where sid=\
""
+ textBox1.Text.Trim() +
"
\
"
;
"
;
46
GetData(str, bindingSource1);
47
}
48
else
{ ;}
49
}
此处使用了Datagridview和BindingSource,使用比较简单:构造一条SQL语句,然后将Datagridview的数据源指向BindingSource,然后利用GetData方法,将SQL语句的执行结果赋给BindingSource就可以了。我觉得这个方法是见过的方法中最简单有效的。GetData可以COPY到任何你想要的地方而无需更改,只要把表格和源定义好,直接加进SQL语句就可以啦~
三,页面Load
这个方法需要VS能够收录Mysql的连接器,第一次成功了,后来就不行,窃以为扩展性不如上两个好。
这种方法实际上就是程序自主建立自己的DataSet,然后,一些数据访问直接在DataSet 上完成,而不用再去访问数据库。
先建立一个DataTableAdapter对象,然后就根据提示,可以输入SQL语句,一步步,最重结果是建立了一个DataTable。没什么代码,鼠标流。
load
1
//
TODO: 这行代码将数据加载到表“kunDataSet.DataTable3”中。您可以根据需要移动或移除它。
2
this
.dataTable3TableAdapter.Fill(
this
.kunDataSet.DataTable3);
3
//
TODO: 这行代码将数据加载到表“kunDataSet.DataTable1”中。您可以根据需要移动或移除它。
4
this
.dataTable1TableAdapter.Fill(
this
.kunDataSet.DataTable1);
就是把DataSet中的数据表Fill到DataGridView中。
大概用到的也就这几种方法了,权作是个笔记了。