using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data;
using System.IO;
using System.Drawing.Imaging;
namespace 数据库
{
/// <summary>
/// MainForm 的摘要说明。
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
public  System.Windows.Forms.MainMenu mainMenu;
private System.Windows.Forms.MenuItem menuItem1;
private logonForm LogForm;
public string currentUser;
private System.Windows.Forms.MenuItem menuItemCUser;
private System.Windows.Forms.MenuItem menuItemDelUser;
private ChangeForm CForm;
private System.Windows.Forms.MenuItem menuItemSysSet;
private System.Windows.Forms.MenuItem menuItemQuit;
private System.Windows.Forms.MenuItem menuItemRecSet;
private System.Windows.Forms.MenuItem menuItemNewRec;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.TreeView treeViewAddr;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.PictureBox pictureBoxLook;
private System.Windows.Forms.Label labelName;
private System.Windows.Forms.TextBox textBoxName;
private System.Windows.Forms.Label labelSex;
private System.Windows.Forms.ComboBox comboBoxSex;
private System.Windows.Forms.Label labelYear;
private System.Windows.Forms.ComboBox comboBoxMonth;
private System.Windows.Forms.Label labelMonth;
private System.Windows.Forms.ComboBox comboBoxDay;
private System.Windows.Forms.Label labelDay;
private System.Windows.Forms.Label labelBelong;
private System.Windows.Forms.TextBox textBoxBelong;
private System.Windows.Forms.Label labelConstellation;
private System.Windows.Forms.TextBox textBoxConstellation;
private System.Windows.Forms.Label labelAddr;
private System.Windows.Forms.TextBox textBoxAddr;
private System.Windows.Forms.Label labelPhone;
private System.Windows.Forms.TextBox textBoxPhone;
private System.Windows.Forms.Label labelMobile;
private System.Windows.Forms.TextBox textBoxMobile;
private System.Windows.Forms.Label labelQQ;
private System.Windows.Forms.TextBox textBoxQQ;
private System.Windows.Forms.Label labelEmail;
private System.Windows.Forms.TextBox textBoxEmail;
private System.Windows.Forms.StatusBarPanel statusBarPanel1;
private System.Windows.Forms.StatusBarPanel statusBarPanel2;
public  OleDbConnection oleDbConnection2;
private DataSet myDataSet;
private System.Windows.Forms.TextBox textBoxYear;
private System.Windows.Forms.Button buttonSave;
private System.Windows.Forms.Button buttonDel;
private  OleDbParameter parm1,parm2,parm3;
public System.Data.OleDb.OleDbConnection oleDbConnection;
private System.Data.OleDb.OleDbDataAdapter myDataAdapter;
private System.Windows.Forms.Label label1; /// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public MainForm()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
  
oleDbConnection = new OleDbConnection(@"Provider = Microsoft.Jet.OLEDB.4.0;Data Source= data\addresslist.mdb"); try
{
oleDbConnection.Open();
}
catch(OleDbException ex)
{
MessageBox.Show(ex.Message);
if (ex.InnerException != null)
MessageBox.Show(ex.InnerException.Message); }
            myDataAdapter = new OleDbDataAdapter();
        myDataSet = new DataSet();
myDataAdapter.SelectCommand = new OleDbCommand();
//this.oleDbConnection.ConnectionString = 

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

解决方案 »

  1.   

    [STAThread]
    static void Main() 
    {
    Application.Run(new MainForm());
    }
    private void MainForm_Load(object sender, System.EventArgs e)
    {
    try
    {
    LogForm = new logonForm(this); LogForm.ShowDialog();
    //建立数据库连接控件 OleDbDataAdapter,DataSet;
    //OleDbDataAdapter表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。
    //DataSet DataSet 是 ADO.NET 结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。
    //DataSet 由一组 DataTable 对象组成,您可使这些对象与 DataRelation 对象互相关联。您还可通过使用 UniqueConstraint 和 ForeignKeyConstraint 对象在 DataSet 中实施数据完整性
    //myDataAdapter = new OleDbDataAdapter();
    myUpdate(); InitialDataAdapter();
                
    treeViewAddr.LabelEdit = true;
    }
    catch(OleDbException ex)
    {
    MessageBox.Show(ex.Message);
    if (ex.InnerException != null)
    MessageBox.Show(ex.InnerException.Message); }
    }
    public void myUpdate()
    {
    try
    {
    myDataAdapter.SelectCommand.Connection = oleDbConnection; myDataAdapter.SelectCommand.CommandText = "SELECT * FROM records WHERE 用户名='" +currentUser +"'"; //myDataAdapter.SelectCommand.Parameters.Add("@姓名",OleDbType.Char,50);
    //myDataAdapter.SelectCommand.Parameters["@姓名"].Value = currentUser;
    myDataAdapter.MissingSchemaAction = System.Data.MissingSchemaAction.AddWithKey;//检测主键 myDataSet.Clear();//清除myDataSet;
                
    myDataAdapter.Fill(myDataSet,"records");//通过fill导入records表 TreeNode mynode;//对树的处理 DataTable dt = myDataSet.Tables["records"];//dt表示Dataset中的表records treeViewAddr.BeginUpdate();//启动对树的更新 treeViewAddr.Nodes.Clear();//清除原来的所有节点 foreach(DataRow dr in dt.Rows)
    {
    mynode = new TreeNode();//新建一个节点
    //设置节点的内容
    mynode.Text = (string)dr["姓名"];
    mynode.Text = mynode.Text.Trim();//把records中的内容去掉空白不部分当作节点内容 treeViewAddr.Nodes.Add(mynode);//把新建的节点加到树的节点末端
    } treeViewAddr.EndUpdate();//对树的更新完毕; statusBar1.Panels[0].Text = "当前用户:" + currentUser;//状态栏显示当前用户
    //显示当前用户记录的个数
    statusBar1.Panels[1].Text = "共有记录: " + myDataSet.Tables["records"].Rows.Count.ToString();
    statusBar1.ShowPanels = true ;
    }
    catch(OleDbException ex)
    {
    MessageBox.Show(ex.Message);
    if (ex.InnerException != null)
    MessageBox.Show(ex.InnerException.Message); }
    } private void menuItemCUser_Click(object sender, System.EventArgs e)
    {
              CForm = new ChangeForm(this); CForm.ShowDialog();
     
    } private void menuItemDelUser_Click(object sender, System.EventArgs e)
    {

    try
    {
    DialogResult result = MessageBox.Show(this,"是要删除新的用户吗?","删除提示",
    MessageBoxButtons.YesNo,
    MessageBoxIcon.Question,
    MessageBoxDefaultButton.Button1,
    MessageBoxOptions.RightAlign); if(result == DialogResult.Yes)
    {

    string sdel = "DELETE FROM [user] WHERE 用户名 = @旧姓名";
    System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
    myCommand.CommandText = sdel;
    myCommand.Connection = oleDbConnection;
    // myCommand.CommandText = "UPDATE [user] SET 姓名=@姓名,密码=@密码 WHERE 姓名=@旧姓名"; //myCommand.Parameters.Add("@姓名",OleDbType.Char,50);
    //myCommand.Parameters.Add("@密码",OleDbType.Char,50);
    myCommand.Parameters.Add("@旧姓名",OleDbType.Char,50);
    //myCommand.Parameters["@姓名"].Value = textBoxUser1.Text.Trim();
    //myCommand.Parameters["@密码"].Value = textBoxPassword.Text.Trim();
    myCommand.Parameters["@旧姓名"].Value = currentUser; myCommand.ExecuteNonQuery(); sdel = "DELETE FROM records WHERE 用户名 = @旧姓名";

    myCommand.CommandText = sdel;
    myCommand.Connection = oleDbConnection;
    myCommand.Parameters.Add("@旧姓名",OleDbType.Char,50);
    myCommand.Parameters["@旧姓名"].Value = currentUser; myCommand.ExecuteNonQuery(); currentUser = "";
    LogForm.ShowDialog();
    }            
    }
    catch(OleDbException ex)
    {
    MessageBox.Show(ex.Message);
    //if (ex.InnerException != null)
    //MessageBox.Show(ex.InnerException.Message); }
    }