我写了一个winForm程序,我要将文本框的值写入到ACCESS数据库中,再从数据库中取出值显示到winForm的DataGridView中。
如下图所示:
因为第一次接触C#,所以能不能请高手们给我写一下C#的winForm中对ACCESS数据库的读写操作,非常感谢。

解决方案 »

  1.   


            private string getMailOrId(string sqlText, out string full_name)
            {
                OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Employees.mdb");
                OleDbCommand cmd = conn.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sqlText;
                conn.Open();
                string userId = string.Empty;
                full_name = string.Empty;
                using (OleDbDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    if (sdr.HasRows)
                    {
                        if (sdr.Read())
                        {
                            userId = sdr.GetString(0);
                            full_name = sdr[1] == DBNull.Value ? userId : sdr[1].ToString();
                        }
                    }
                    sdr.Close();
                }
                conn.Close();
                return userId;
            }        private void getNewEmp(out string eid, out string email, out string uname)
            {
                eid = string.Empty;
                email = string.Empty;
                uname = string.Empty;
                OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Employees.mdb");
                OleDbCommand cmd = conn.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "SELECT TOP 1 EID,E_mail, First_Name+', '+Last_Name as EName FROM dbo_m_Employee";
                conn.Open();
                using (OleDbDataReader odr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    if (odr.HasRows)
                    {
                        if (odr.Read())
                        {
                            eid = odr[0].ToString();
                            email = odr[1].ToString();
                            uname = odr[2] == DBNull.Value ? eid : odr[2].ToString();
                        }
                    }
                    odr.Close();
                }
                conn.Close();
            }        private void deleteData(string eid)
            {
                OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Employees.mdb");
                OleDbCommand cmd = conn.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "delete from dbo_m_Employee where eid='" + eid + "'";
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }这是我前些天写的个小东西里面用到的,不是很规范。你可以参考一下。
      

  2.   

    /// <summary>
    /// AccessDataProvider 的摘要说明。
    /// </summary>
    public class AccessData
    {
    private string ConnectionString; public AccessData()
    {
    this.ConnectionString= "Provider=Microsoft.Jet.Oledb.4.0;Data Source="+Application.StartupPath+"\\System\\Tasks.mdb";
    }
    public AccessData(string ConnectionString)
    {
    this.ConnectionString=ConnectionString;
    }
    private OleDbConnection GetOleDbConnection() 
    {
    try 
    {
    return new OleDbConnection(ConnectionString);
    }catch {
       throw new Exception("Connection String is invalid.");
    }
    }

    public static AccessData Instance()
    {
    return new AccessData();
    }
    public int FolderInsert(Folder folder)
    {
    string sql="INSERT INTO Folders(FolderName,ParentID) VALUES(@FolderName,@ParentID)";
    OleDbConnection Conn = GetOleDbConnection();
    OleDbCommand Cmd = new OleDbCommand(sql,Conn);
    Cmd.CommandType=CommandType.Text;
    Cmd.Parameters.Add("@FolderName", OleDbType.VarChar).Value =folder.Name;
    Cmd.Parameters.Add("@ParentID", OleDbType.Integer).Value =folder.ParentID;
    Conn.Open();
    Cmd.ExecuteNonQuery();
    Cmd=new OleDbCommand("SELECT @@IDENTITY",Conn);
    int i=(int)Cmd.ExecuteScalar();
    Cmd.Dispose();
    Conn.Close();
    return i;
    }public ArrayList GetFolders()
    {
    using( OleDbConnection Conn = GetOleDbConnection() ) 
    {
    ArrayList BL= new ArrayList();
    OleDbCommand command = new OleDbCommand("Select * From Folders",Conn);
    Conn.Open();
    OleDbDataReader Dr=command.ExecuteReader();
    while(Dr.Read())
    {
    Folder folder= new Folder();
    folder=PopulateFolderIDataReader(Dr);
    BL.Add(folder);
    }
    Dr.Close();
    Conn.Close();
    return BL;
    }
    }上面的只是样列。
    要么你自己去下一个OleDBHelper也可以实现。
      

  3.   

    C#操作Access数据库--代码三人帮  
      

  4.   


    那如何将ACC数据库里的信息放到DataGridView里呢?有代码演示吗?
      

  5.   


            private DataTable GetAllData()
            {
                OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Employees.mdb");
                OleDbCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT * FROM dbo_m_Employee";
                OleDbDataAdapter oda = new OleDbDataAdapter(cmd);
                DataTable dt = new DataTable();
                oda.Fill(dt);
                return dt;
            }可以用OleDbDataAdapter返回一个DataTable,
    然后在界面上拖一个DataGridView,
    在后台调用这个查询方法就可以了:
    this.dataGridView1.DataSource = GetAllData();当然,也可以用OleDbDataReader一行一行的读取,封装成List<T>然后给dataGridView1.DataSource
      

  6.   

    增加的话参考这个吧:http://www.cnblogs.com/maxblog/archive/2010/04/01/1702549.html再查出来显示的话:http://www.cnblogs.com/maxblog/archive/2010/04/01/1702543.html
      

  7.   

    sql语句的问题。
    string sql="inset into test1(name1,age1,info1) values('"+NameT+"','"+ageT+"','"+infoT+"') ;"
    或者
    string sql=String.Format("inset into test1(name1,age1,info1) values('{0}','{1}','{2}')",NameT,ageT,infoT);string类型的参数要加上‘’
      

  8.   

    我想问一下,我用Access做的数据库,但是最后我们要求生成一个客户端还需要怎么做呀?求高手指点,很急急急呀!!!!!