佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1754|回复: 20

[载图+教学]C# 用 OLEDB COMPONENT 来 载入 DATABASE

[复制链接]
发表于 27-7-2006 03:12 PM | 显示全部楼层 |阅读模式
想开一个贴给予C#新手一些DATABASE载入的帮助
这个教学将授予C#新手如何载入 DATABASE来读取资料。

为了让新手更了解,我选用了C#。NET还有MICROSOFT ACCESS。
首先,CREATE一个DATABSE然后也CREATE一个TABLE(CREATE DATABASE 方面我不多说啦)我将

DATABASE名 : example.mdb
TABLE   名 : Customer

Customer TABLE里面有两个FIELD(简单化),ID 和 Name.
把ID和Name的DATA TYPE 弄成"TEXT"。
DATABASE 就算完成了。



接着,在C#。NET里面就DRAG
一个BUTTON (查看TEXTBOX里的名有米有在 DATABASE),NAME : check_btn
一个LABEL(显示结果) NAME : show_lbl
一个TEXT BOX(INPUT TEXT)NAME : input_txt



然后就是重点了。。。
必须CREATE一个CLASS,那个CLASS是用OLEDB来CONNECT去DATABASE,
然后读取DATABASE查看TEXTBOX里的TEXT(刚刚的TEXTBOX),如果有,LABEL就显示"RECORD FOUND",米有就"RECORD NOT FOUND"。




[ 本帖最后由 弥勒 于 2-8-2006 10:08 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 27-7-2006 03:13 PM | 显示全部楼层
偶的CLASS的例子:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Data;

namespace WindowsApplication3
{
    class UserLogin
    {
        private string constring;
        private string sqlcom;

        //string a是拿来收INSTANTIATE的CONNECTION STRING
        //string b是拿来收SQL COMMAND 的

        public UserLogin(string a,string b)
        {
            constring = a;
            sqlcom = b;

        //将a和b都ASSIGN到constring 和 sqlcom里面
        (为了符合OBJECT ORIENTED PROGRAMMING,没法啦。。。)

        }

        //这个METHOD是拿来CONNECT DATABASE, RUN那个SQL,然后RETURN   
        //INTEGER VALUE,-1就是ERROR,1就是找到啦,0就是找没有。
        public int loginexe()
        {
            OleDbDataReader dtrcust;
            String connectionString = constring;
               
            using (OleDbConnection connection = new    OleDbConnection(connectionString))
            {  
                OleDbCommand command = new OleDbCommand(sqlcom);
                command.Connection = connection;

                try
                {
                    connection.Open();

                    dtrcust = command.ExecuteReader();
   //这里是将收到的VALUEASSIGN进去一个DATAREADER(专门那来SAVE DATA LOAD FROM DATABASE的)
   //如果DATAREADER里面有RECORD,就是说读取成功啦。。。
   //如果没有就是说没有酱的RECORD

                    bool meet = true;

                    for (int i = 0; i < dtrcust.FieldCount; i++)
                    {
                        if (dtrcust.Read())
                        {
                            meet = false;
                        }
                    }
                    if (meet==false)
                        return 1;
                    else
                        return 0;
                }
                catch (Exception ex)
                {
                    return -1;
                }
            }
        }
    }


}
回复

使用道具 举报

 楼主| 发表于 27-7-2006 03:14 PM | 显示全部楼层
CONNECTION STRING 其实是一个STRING来IDENTIFY用什么ENGINE,DATASOURCE然后OLEDB就回去CONNECT BASED ON 哪个CONNECTIONSTRING,
SQL COMMAND 新手也应该了解吧。。。



为什么CONNECTION STRING要从BUTTON那里PASS进来而不是把CONNECTION 放在CLASS里就不用酱麻烦。。。
不对。。。
如果是酱,那这个CLASS就只能CONNECT去一个DATASOURCE,一个ENGINE了。。。如果十个DATABASE没可能弄十个CLASS,对吗??
然而用这种办法PASS CONNECTION STRING 进来那个CLASS是可以共用的。。。也就是REUSABILITY提高了。。。


接下来就是在USER CONTROL(BUTTON,TEXTOX,LABEL)那里加一些CODING。。。

首先,必须要在BUTTON那里ASSIGN成EVENTHANDLER,给初学者,DOUBLE CLICK 哪个BUTTON就进一个BUTTON了。。。
然后在BUTTON里面加:




private void check_btn_Click(object sender, EventArgs e)

{
int check=0;
UserLogin ul=new UserLogin(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=example.mdb", @"SELECT Name from member WHERE Name='" + input_txt.Text + "' ");//这就是PASS CONENCTIONSTRING 和 SQL的地方。。。

check=ul.loginexe();

if(check==1)
show_lbl.Text= "Record Found!";
else if(check==-0)
show_lbl.Text="Record Not Found!";
else
show_lbl.Text="Error on Connection!";

}








[ 本帖最后由 弥勒 于 1-8-2006 07:37 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 27-7-2006 03:14 PM | 显示全部楼层
简单的DATABASE RETRIEVE就酱啦。。。
还请各位大哥大姐指教偶的问题。。。
什么DATABASE问题也可以POST这里一起讨论吧。。。
回复

使用道具 举报

 楼主| 发表于 27-7-2006 03:23 PM | 显示全部楼层
噢,忘记跟你们讲ASP。NET如果用C#来写也可以用这个CLASS
回复

使用道具 举报

 楼主| 发表于 27-7-2006 03:23 PM | 显示全部楼层
噢,忘记跟你们讲ASP。NET如果用C#来写也可以用这个CLASS
回复

使用道具 举报

Follow Us
发表于 30-7-2006 05:11 PM | 显示全部楼层
我试了,但有error
Type or namespace definition, or end-of-file expected
要怎样呢?
(小弟乃初学者)
回复

使用道具 举报

发表于 30-7-2006 05:15 PM | 显示全部楼层
还有之前的table是customer,到了initialize database 那边又变了member
DATABASE名 : example.mdb
TABLE   名 : Customer
UserLogin ul=new UserLogin(@"rovider=Microsoft.Jet.OLEDB.4.0;Data Source=example.mdb", @"SELECT Name from member WHERE Name='" + input_txt.Text + "' ";//这就是PASS CONENCTIONSTRING 和 SQL的地方。。。

不知道对不对?

[ 本帖最后由 lieweffect 于 30-7-2006 05:26 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 30-7-2006 09:51 PM | 显示全部楼层
原帖由 lieweffect 于 30-7-2006 05:15 PM 发表
还有之前的table是customer,到了initialize database 那边又变了member


不知道对不对?

噢。。。
那个素偶的ERROR!!
抱歉。。换去Customer试下看看。。
回复

使用道具 举报

发表于 1-8-2006 05:02 PM | 显示全部楼层
尝试了还table名字
但error还出现
Type or namespace definition, or end-of-file expected
要怎样呢?
回复

使用道具 举报

 楼主| 发表于 1-8-2006 05:18 PM | 显示全部楼层
原帖由 lieweffect 于 1-8-2006 05:02 PM 发表
尝试了还table名字
但error还出现
Type or namespace definition, or end-of-file expected
要怎样呢?

今晚我弄弄看。。。。
顺便贴一些SCREEN SHOT 上来。。。
抱歉噢。。。现在在公司不能弄。。。
回复

使用道具 举报

发表于 1-8-2006 05:32 PM | 显示全部楼层
原帖由 弥勒 于 1-8-2006 05:18 PM 发表

今晚我弄弄看。。。。
顺便贴一些SCREEN SHOT 上来。。。
抱歉噢。。。现在在公司不能弄。。。

3q.............
回复

使用道具 举报

 楼主| 发表于 1-8-2006 07:41 PM | 显示全部楼层
原帖由 lieweffect 于 1-8-2006 05:32 PM 发表

3q.............


偶加了SCREENSHOT了。。。
希望更多人了解咯。。。
还有。。。我RUN了。。。米有问题。。。
看你的ERROR是。。。
这个"}"好象太多或太少。。。
或者你看上面的namespace有米有
using System.Data.OleDb;
using System.Data;
回复

使用道具 举报

发表于 1-8-2006 10:25 PM | 显示全部楼层
check了还是酱
我的code:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;

namespace WindowsApplication1
{
        class UserLogin
        {
                private string constring;
                private string sqlcom;

                public UserLogin(string a,string b)
                {
                        constring a;
                        sqlcom b;
                }
               
                public int loginexe()
                {
                        OleDbDataReader dr;
                        String connectionString=constring;
                        using(OleDbConnection connection=new OleDbConnection(connectionString))
                        {
                                OleDbCommand com=new OleDbCommand(sqlcom);
                                com.Connection=connection;
                                try
                                {
                                        connection.Open();
                                        dr=com.ExecuteReader();
                                        bool meet=true;
                                        for(int i=0;i<dr.FieldCount;i++)
                                        {
                                                if(dr.Read())
                                                {
                                                        meet=false;
                                                }
                                        }
                                        if(meet==false)
                                                return 1;
                                        else
                                                return 0;
                                }
                                catch(Exception ex)
                                {
                                        return-1;
                                }
                        }
                }
        }
       
}

        /// <summary>
        /// Summary description for Form1.
        /// </summary>
public class Form1 : System.Windows.Forms.Form
{
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button1;
       
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
                //
                // Required for Windows Form Designer support
                //
                InitializeComponent();

                //
                // TODO: Add any constructor code after InitializeComponent call
                //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
                if( disposing )
                {
                        if (components != null)
                        {
                                components.Dispose();
                        }
                }
                base.Dispose( disposing );
        }

Windows Form Designer generated code

/// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
                Application.Run(new Form1());
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
                int check=0;
                UserLogin ul=new UserLogin(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=example.mdb",@"SELECT Name from customer  WHERE Name='" + textBox1.Text + "' ");

                check=ul.loginexe();

                if(check==1)
                        label1.Text= "Record Found!";
                else if(check==-0)
                        label1.Text="Record Not Found!";
                else
                        label1.Text="Error on Connection!";
        }

       
}
}
回复

使用道具 举报

 楼主| 发表于 1-8-2006 10:39 PM | 显示全部楼层
原帖由 lieweffect 于 1-8-2006 10:25 PM 发表
check了还是酱
我的code:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;

...

你用SOMOK东东写??VISUAL STUDIO吗??
可以告诉我ERROR在那一行啊??
回复

使用道具 举报

发表于 2-8-2006 05:23 PM | 显示全部楼层
是啊visual studio.net
最后一行,那个}红色underline,试过加多一个和减一个
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 2-8-2006 05:31 PM | 显示全部楼层
楼主。。
你是不是只用一个FORM。。。。
你有CREATE新的CLASS吗。。。
上面的CODING 通通在一个FORM里面????

Form1是一个FORM。。。
UserLogin是一个CLASS。。。
不同东动来的。。。。

[ 本帖最后由 弥勒 于 2-8-2006 05:32 PM 编辑 ]
回复

使用道具 举报

发表于 2-8-2006 06:00 PM | 显示全部楼层
原帖由 弥勒 于 2-8-2006 05:31 PM 发表
楼主。。
你是不是只用一个FORM。。。。
你有CREATE新的CLASS吗。。。
上面的CODING 通通在一个FORM里面????

Form1是一个FORM。。。
UserLogi ...

原来如此。。。谢谢你的提醒
回复

使用道具 举报

 楼主| 发表于 2-8-2006 07:02 PM | 显示全部楼层
原帖由 lieweffect 于 2-8-2006 06:00 PM 发表

原来如此。。。谢谢你的提醒

你弄了跟我说吧。。。。。
希望可以拉。。。
回复

使用道具 举报

发表于 13-9-2008 03:49 PM | 显示全部楼层
呵呵!!谢!!你2年前的教学。。成功了

example.mdb 应该放在那个folder?? (小弟乃初学者)

之前一直Error on Connection!。。。之后每个folder放一个example.mdb

example.mdb默认的路径,在那的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2025 07:48 AM , Processed in 0.110351 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表