下面使用SharpDevelop 5.1 调试一个简单会员管理系统,源码来自
http://www.softhy.net/soft/35411.htm
在SharpDevelop 5.1打开,运行该项目;
出现下图错误;
多个入口点;注释了Login.cs中的一个测试类,该类包含一个Main()函数;
再运行,出现下图错误;
网上查找bclient,不知为何物;注释掉相关语句;
再运行,出现下图错误;
修改目标CPU为32位Intel兼容,如下图;
跑起来后,需要登录;
用MDB查看工具打开数据库可看到表的内容;MDB查看工具在
http://blog.csdn.net/bcbobo21cn/article/details/51000041
运行起来,仅有个人信息查看和修改功能;
下面看下其主要代码;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
//Download by http://www.codefans.net
namespace 会员管理系统_桌面级_
{
public partial class Edit : Form
{
public Edit( )//接UserName数据
{
InitializeComponent( );
lblUserName.Text = Login.loginedUserName;
}
private void Edit_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“memberDataSet1.Users”中。您可以根据需要移动或移除它。
this.usersTableAdapter.Fill(this.memberDataSet1.Users);
// TODO: 这行代码将数据加载到表“memberDataSet1.Users”中。您可以根据需要移动或移除它。
this.usersTableAdapter.Fill(this.memberDataSet1.Users);
// TODO: 这行代码将数据加载到表“memberDataSet1.Users”中。您可以根据需要移动或移除它。
this.usersTableAdapter.Fill(this.memberDataSet1.Users);
ShowUserInfo( );
}
private void ShowUserInfo( )
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\..\\..\\member.mdb";//最新方法,能把数据库放在项目文件夹目录中读取
//和网页版会员管理系统差不多,代码也是先粘贴过来再修改的
OleDbConnection conn = new OleDbConnection(strConn);
string sql = "SELECT * FROM Users WHERE UserName='" + lblUserName.Text + "'";
OleDbCommand cmd = new OleDbCommand(sql, conn);
conn.Open( );
OleDbDataReader reader = cmd.ExecuteReader( );
reader.Read( );
txtRealName.Text = reader["RealName"].ToString( );
string ValueSex = reader["Sex"].ToString( );//性别显示,要加判断
if ( ValueSex == "女" )
{
rbSexWoman.Checked = true;
}
else
{
rbSexMan.Checked = true;
}
cboQuestion.Text = reader["Question"].ToString();
//cboQuestion无法正常显示
//cboQuestion.SelectedValue = reader["Question"].ToString( );
//cboQuestion.DisplayMember = reader["Question"].ToString( );
//cboQuestion.ValueMember = reader["Question"].ToString( );
txtAnswer.Text = reader["Answer"].ToString( );
txtEmail.Text = reader["Email"].ToString( );
reader.Close( );
conn.Close( );
}
private void btnSumbit_Click(object sender, EventArgs e)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
Application.StartupPath + "\\..\\..\\member.mdb";
OleDbConnection conn = new OleDbConnection(strConn);
string name, realName, sex, question, answer, email;
//, address;
name = lblUserName.Text;
realName = txtRealName.Text.Trim( );
if ( rbSexWoman.Checked == true )//性别输入用了个变通的方法,不规范的,有机会要学会用正确的
{
sex = "女";
}
else
sex = "男";
question = cboQuestion.SelectedItem.ToString( );
answer = txtAnswer.Text.Trim( );
email = txtEmail.Text.Trim( );
//address = txtAddress.Text.Trim( );
string sql = @"UPDATE Users SET RealName=?, Sex=?," +
"Question=?, Answer=?, Email=? WHERE UserName='" + name + "'";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Parameters.Add(new OleDbParameter("@RealName", OleDbType.WChar));
cmd.Parameters.Add(new OleDbParameter("@Sex", OleDbType.WChar));
cmd.Parameters.Add(new OleDbParameter("@Question", OleDbType.WChar));
cmd.Parameters.Add(new OleDbParameter("@Answer", OleDbType.WChar));
cmd.Parameters.Add(new OleDbParameter("@Email", OleDbType.WChar));
//cmd.Parameters.Add(new OleDbParameter("@Address", OleDbType.WChar));
cmd.Parameters["@RealName"].Value = realName;
cmd.Parameters["@Sex"].Value = sex;
cmd.Parameters["@Question"].Value = question;
cmd.Parameters["@Answer"].Value = answer;
cmd.Parameters["@Email"].Value = email;
//cmd.Parameters["@Address"].Value = address;
conn.Open( );
cmd.ExecuteNonQuery( );
conn.Close( );
Main mymain = new Main( );
mymain.Show( );
this.Close( );
}
private void btnReset_Click(object sender, EventArgs e)
{
this.txtRealName.ResetText( );
this.txtAnswer.ResetText( );
this.txtEmail.ResetText( );
//this.cboQuestion.SelectedIndex = 1; //1为你所要选中的默认值的序号,一般从0开始 程序对该代码没反应
}
private void fillByToolStripButton_Click(object sender, EventArgs e)
{
///try{this.usersTableAdapter.FillBy(this.memberDataSet1.Users);}
///catch ( System.Exception ex ){System.Windows.Forms.MessageBox.Show(ex.Message);}
}
private void txtRealName_Validating(object sender, CancelEventArgs e)
{
if (txtRealName.Text.Length == 0)
errRealName.SetError(txtRealName, "用户名不能为空!");
else
errRealName.Clear( );
}
private void gbxSex_Validating(object sender, CancelEventArgs e)
{
}
private void cboQuestion_Validating(object sender, CancelEventArgs e)
{
if (cboQuestion.SelectedItem == null)
errQuestion.SetError(cboQuestion, "请选择密码提示问题!");
else
errQuestion.Clear( );
}
private void txtAnswer_Validating(object sender, CancelEventArgs e)
{
if (txtAnswer.Text.Length == 0)
errAnswer.SetError(txtAnswer, "请输入密码查询答案!");
else
errAnswer.Clear( );
}
private void txtEmail_Validating(object sender, CancelEventArgs e)
{
if (txtEmail.Text.Length == 0)
errEmail.SetError(txtEmail, "请输入电子邮件地址!");
else
errEmail.Clear( );
}
}
}
使用了OLEDB的方式访问Access;数据提供者是Microsoft.Jet.OLEDB.4.0;
数据库在程序的启动路径;
用OleDbDataReader读取到数据以后显示;
更新数据时使用了OleDbCommand对象的参数属性,先添加参数,然后设置参数的值;然后用OleDbCommand对象的ExecuteNonQuery方法执行SQL语句;