صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 54

نام تاپیک: فاکس پرو و MySQL

  1. #1

    فاکس پرو و MySQL

    سلام

    من در این قسمت می خواهم گام به گام ارتباط بین فاکس و MySql را هر چه که تجربه کرده ام به دیگران هم بیاموزم.

    مرحله اول:

    MySql را دانلود کنید: http://dev.mysql.com/downloads/

    ابزار ODBC آنرا هم از آدرس بالا دریافت کنید. البته MySQL تحت ویندوز را!

    خب حالا نرم افزارهای دانلود شده را نصب کنید.

    فرض من بر این است که آنها را در شاخه C:\MySQL نصب کرده اید.

    برای تنظیم MySQL بایستی فایل My.ini را در شاخه ویندوزتان تنظیم کنید.
    winmysqladmin در ویندوز برای تنظیم بکار میرود.

    فایلهای Mysqld و Mysqld-nt برای راه اندازی سرویس مربوطه ضروی هستند. و Mysql برنامه ارتباطی و محل دستورات است.

    همه اینها در شاخه Bin قرار دارند. در شاخه DOCs توضیحات مفصلی در این باره خواهید یافت. Data معمولا محل نگهداری داده ها است که در فابل My.ini تنظیم میشود. libmySQL.dll یکی از فایلهای ضروری است.

    خب ادامه را به بعد موکول میکنم.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1383
    محل زندگی
    ایران
    پست
    120
    ممنون :flower:

  3. #3
    دست شما درد نکنه . ولی خواهش میکنم وسط راه رها نشه.
    ممنون

  4. #4
    خب ادامه بحث:

    تا اینجا شما ابزارهای لازم را نصب کرده اید. حالا نوبت به کار در MySql است. به شاخه C:\MySQL\Bin بروید و در صورتیکه در ویندوز 98 هستید MySQLd و در صورتیکه در رده Nt هستید MySQLd-nt را اجرا کنید. سپس MySQL را اجرا کنید(تمام فایلها با پسوند EXE) حالا وارد محیطی سیاه رنگ شده اید که محل تایپ دستورات است. اگر وارد این محیط نشدید پیغام خطایی دارید که نشاندهنده خطا است.

    در این محیط شما فقط به چند چیز در ابتدا نیازمندید:
    1- ساختن دیتابیس.
    2- ساختن جدول.
    3- ساختن ایندکس.

    متاسفانه برعکس MSSQL هیچ محیط گرافیکی برای این کار وجود ندارد. اما خوشبختانه دستوراتی شبیه FOXPRO دارد! C:\mysql\Docs\manual.html توضیجاتی اساسی در این زمینه دارد. مثلا برای ساخت یک جدول :



    13.2.5 CREATE TABLE Syntax

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
    [table_options] [select_statement]

    or:

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)];

    create_definition:
    col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
    [[PRIMARY] KEY] [COMMENT 'string'] [reference_definition]
    | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
    | KEY [index_name] [index_type] (index_col_name,...)
    | INDEX [index_name] [index_type] (index_col_name,...)
    | [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] [index_type] (index_col_name,...)
    | FULLTEXT [INDEX] [index_name] (index_col_name,...)
    | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...)
    [reference_definition]
    | CHECK (expr)

    type:
    TINYINT[(length)] [UNSIGNED] [ZEROFILL]
    | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
    | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
    | INT[(length)] [UNSIGNED] [ZEROFILL]
    | INTEGER[(length)] [UNSIGNED] [ZEROFILL]
    | BIGINT[(length)] [UNSIGNED] [ZEROFILL]
    | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
    | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
    | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
    | DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
    | NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
    | CHAR(length) [BINARY | ASCII | UNICODE]
    | VARCHAR(length) [BINARY]
    | DATE
    | TIME
    | TIMESTAMP
    | DATETIME
    | TINYBLOB
    | BLOB
    | MEDIUMBLOB
    | LONGBLOB
    | TINYTEXT
    | TEXT
    | MEDIUMTEXT
    | LONGTEXT
    | ENUM(value1,value2,value3,...)
    | SET(value1,value2,value3,...)

    index_col_name:
    col_name [(length)] [ASC | DESC]

    reference_definition:
    REFERENCES tbl_name [(index_col_name,...)]
    [MATCH FULL | MATCH PARTIAL]
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

    reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

    table_options: table_option [table_option] ...

    table_option:
    {ENGINE | TYPE} = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM}
    | AUTO_INCREMENT = #
    | AVG_ROW_LENGTH = #
    | CHECKSUM = {0 | 1}
    | COMMENT = 'string'
    | MAX_ROWS = #
    | MIN_ROWS = #
    | PACK_KEYS = {0 | 1 | DEFAULT}
    | PASSWORD = 'string'
    | DELAY_KEY_WRITE = {0 | 1}
    | ROW_FORMAT = { DEFAULT | DYNAMIC | FIXED | COMPRESSED }
    | RAID_TYPE = { 1 | STRIPED | RAID0 } RAID_CHUNKS=# RAID_CHUNKSIZE=#
    | UNION = (table_name,[table_name...])
    | INSERT_METHOD = { NO | FIRST | LAST }
    | DATA DIRECTORY = 'absolute path to directory'
    | INDEX DIRECTORY = 'absolute path to directory'
    | DEFAULT CHARACTER SET character_set_name [COLLATE collation_name]

    select_statement:
    [IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)



    این توضیجات فایل ذکر شده وجود دارد. شما هم برای استفاده از این نرم افزار بسیار قدرتمند از این راهنما استفاده کنید.

    اما در MySQL دیتابیس چیست؟

    در شاخه C:\mysql\data که پیش فرض است دیتابیسها قرار میگیرند. و یک دیتابیس چیزی نیست به غیر از یک شاخه یا دایرکتوری یا فولدر. حتی دستی شما اگر یک شاخه در این قسمت ایجاد کنید دیتابیس شما ساخته میشود! اما دستور اینکار:




    CREATE DATABASE [IF NOT EXISTS] db_name
    [create_specification [, create_specification] ...]




    مثال:



    CREATE DATABASE Exam1



    خب بعد از ساخت دیتا بیس نوبت نحوه استفاده از آن است:



    use database



    یک دیتابیس را مورد استفاده قرار میدهد.

    حالا نوبت به ساخت جدول میرسد اما انواع داده در MySQL:



    11 Column Types

    11.1 Numeric Types
    Type Bytes From To
    TINYINT 1 -128 127
    SMALLINT 2 -32768 32767
    MEDIUMINT 3 -8388608 8388607
    INT 4 -2147483648 2147483647
    BIGINT 8 -9223372036854775808 9223372036854775807

    11.2 Date and Time Types
    Column type ``Zero'' value
    DATETIME '0000-00-00 00:00:00'
    DATE '0000-00-00'
    TIMESTAMP 00000000000000 (length depends on display size)
    TIME '00:00:00'
    YEAR 0000

    11.3 String Types
    Type Max.size Bytes
    TINYTEXT or TINYBLOB 2^8-1 255
    TEXT or BLOB 2^16-1 (64K-1) 65535
    MEDIUMTEXT or MEDIUMBLOB 2^24-1 (16M-1) 16777215
    LONGBLOB 2^32-1 (4G-1) 4294967295

    11.3.3 The ENUM Type
    11.3.4 The SET Type





    در فایل راهنما شمارا در باره تمام انواع داده آگاه میسازد. انواع داده ای که به تازگی فاکس 9 هم از برخی از آنها بهره می برد مانند VarChar.


    خب همه اینها مانند فاکس پرو نیستند شما بایستی در قسمت 11.5 Using Column Types from Other Database Engines به توصیه های شده عمل کنید.

    خب یک بانک ساده که در رهنما هست میسازیم:


    mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
    -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);



    راستی یادم رفت بگم قانون مای با فاکس در تایپ این تفاوت را داره که آخر خط فاکس هیچی نیست و اگر ; بود یعنی ادامه در خط بعد اما مای برعکس هر وقت خواستیم خط را تموم کنیم ; میزنیم و مثل زبان سی یا پاسکال است.

    خب چون توضیحات زیاد شده بقیه بعداً میگم.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  5. #5
    سلام

    آدرس زیر یکی از سایتهایی که ODBC را میتوانید دریافت کنید نشان میدهد

    http://dev.mysql.com/get/Downloads/M....msi/from/pick


    آدرس زیر محل دریافت خود مای سکوئل است:

    http://dev.mysql.com/get/Downloads/M....zip/from/pick
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  6. #6
    یک موضوع که مهم است اینه که اگه جداول شما حجمشون کم باشه بهتر از خود جداول فاکس استفاده کنید. چونکه سرعت در فاکس بیشتره تا ارتباط با بانک دیگه. و یک مسئله دیگه اینه که بعد از ارتباط یک View ساخته میشه که مثل جداول فاکس با آن کار کنید. پس تمام خصوصیات این جدول از خصوصیات فاکس میشه یعنی حداکثرهایی که فاکس پشتیبانی میکنه.

    خب برای تبدیل جداول فاکس به مای از

    ftp://leafe.com/stru2mysql.PRG

    استفاده کنید. این برنامه یک فایل ایجاد میکند که در ان یک دستور Create Table وجود دارد. برای ساختن جدول در مای سکوئل این فایل بایستی در مای سکوئل اجرا شود:


    shell> mysql db_name < script.sql > output.tab

    OR

    mysql> SOURCE C:\mysql\scripts\mysql_fix_privilege_tables.sq l




    حالا فقط ساختن ایندکس باقی مانده:





    13.2.4 CREATE INDEX Syntax


    CREATE [UNIQUE|FULLTEXT] INDEX index_name [index_type]
    ON tbl_name (index_col_name,...)





    و یک مثال در فایل Docs.htm :





    mysql> CREATE INDEX part_of_name ON customer (name(10));






    از این مرحله به بعد دیگر کاری به مای سکوئل نداریم و کافیست Mysqld در حالت اجرا باشد.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  7. #7
    سلام

    ادامه بحث:

    اول لطفا نظر بدید و بگید توضیحات خوب و کافیه؟

    اما گفتم که حداقل کاری که باید در مای سکوئل کنیم تمام شده اما یک برنامه نویس حرفه ای بایستی با دستورات کار کند و دستوری که ما نیاز داریم در آن تمام دستورات مای سکوئل را بدانیم



    SQLEXEC(nStatementHandle, [cSQLCommand, [cCursorName[, aCountInfo]]])




    است. پارامتر cSQLCommand دستورات مای سکوئل باید باشد. مثلاً




    a = SQLSTRINGCONNECT("DSN=Test;DESC=MySQL ODBC 3.51 Driver DSN;DATABASE=test;SERVER=localhost;UID=;PASSWORD=; PORT=3306;OPTION=3;STMT=;",.T.)
    SQLEXEC(a,"select ABS(-10)")
    BROWSE



    خب حالا توابع در کدام قسمت فایل راهنما توضیح داده شده اند؟

    12 Functions and Operators

    را بایستی دنبال کنید.یک لیست بلند بالا از تمام توابع.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  8. #8
    خب تا اینجا دیگه کافیه بهتر بریم سراغ خود فاکس:
    یک پروژه بسازید و در آن:
    یک دیتا بیس بسازید و در آن:
    در آن یک کانکشن ایجاد کنید. با استفاده از مراحل زیر:
    بر روی گزینه Connections کلیک کنید.
    دکمه New را فشار دهید تا کانکشن جدید ساخته شود.
    هنگامی که وارد پنجره شدید Connection String را انتخاب و روی ... روبروی آن کلیک کنید.
    پنجره Select Data Source که ظاهر شد روی صفحه machine data source کلیک کنید و دکمه New را فشار دهید. Create Data source پدیدار میشود روی UserData Source کلیک کنید و درایور Odbc مای سکوئل را انتخاب کنید. و بعد نام دیتابیستان را انتخاب کنید.

    خب اگه تا اینجا درست کار کرده باشید بایستی کانکشن درست جواب بده و Connection Succed نمایش داده بشه. از این پنجره خارج شده و نامی که میخواهید را به کانکشنتان بدهید.

    خب فقط ساختن View مانده تا دیتا بیس مانند یک جدول فاکس بشود!







    لطفا تا اینجا نظر بدید.


    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    United Arab Emirates
    پست
    97
    خیلی ممنون

  10. #10
    من که متاسفانه فعلا درگیر برنامه هستم ولی حتما انجام میدم تا این موضوع رو یاد بگیرم .
    میشه بگید چطور این صفحه رو ذخیره کنیم که اگر سایت منفجر شد :mrgreen: اونو داشته باشیم؟

  11. #11
    گزینه منوی فایل SaveAs صفحات ذخیره میشوند!
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  12. #12
    جالبتر اینکه میگه این صفحه قابل ذخیره کردن نیست :موفق:

  13. #13
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107
    سلام
    برنامه نویس رو باید بصورت web archive (mht) ذخیره کرد :sunglass:
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  14. #14
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    United Arab Emirates
    پست
    97
    سلام
    من تمام مراحل مطرح شده را انجام داده و یک View نیز درست کردم و با استفاده از دستور Repl اطلاعات آن را تغییر دادم اما وقتی از طریق Sql Server جدول را مشاهده مینمایم تعییرات اعمال نشده است......؟
    با تشکر

  15. #15
    سلام

    تا همین جا که بیشتر توضیح نداده بودم (ساختن ویو). ادامه را حتما می دهم.


    اگر شما از قبل آشنا نبودید نشون میده بد توضیح ندادم نه؟ فرداشب ادامه موضوع و آخرین قسمت اصلی را توضیح می دهم.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  16. #16
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    United Arab Emirates
    پست
    97
    متشکرم

  17. #17
    ساختن یک ویوی راه دور

    منظور از ویوی راه دور ویویی است که از جداول غیر فاکس پرو و از طریق ODBC ساخته می شود. یک ویو پس از ساخت یک جدول فاکس است بنابراین باید دقت داشت که تمام خصوصیات یک جدول فاکس را به همراه خواهد داشت. مثلا حداکثر 2گیگا بایت حجم. اگر یک ویوی راه دور دارای نوع داده ای است که در فاکس وجود ندارد؛ یا شبیه آن یا از کاراکتری استفاده کنید. دقت داشته باشید هر چه ویوی شما کم حجم تر باشد بهتر است. بنابراین با فیلتر گذاری درست جدولی محدود و خلاصه و مفید بسازید.

    خب حالا می خواهیم یک ویوی قابل تغییر بسازیم:
    بر روی دیتابیس خود روی Remote View کلیک کرده و New را انتخاب کنید. اگر از قبل Connection ساخته باشید آن نمایش داده میشود. و در پایین دو گزینه وجود دارد:
    1- Connections
    2- Available Data Source

    بگذارید همان اولی باشد. چون دومی اطلاعات مرتبط با فایل ODBC.INI که در شاخه ویندوزتان قرار دارد را بر میگرداند. اولی این مزیت را دارد که اگر Connection شما در موقع ساخت Display ODBC login prompt آن Never باشد هیچ چیزی نشان کاربر نخواهد داد. و مانند یک جدول خوب عمل خواهد کرد بی هیچ سوالی!

    دکمه Ok شما را به ساخت ویوی فاکس می برد. مانند جداول و دیتابیس فاکس عمل کنید و ویوی خود را بسازید. دقیقا همانگونه که در فاکس عمل میکنید. خب ویوی شما حاضر است آنرا میتوانید اجرا کنید. ولی قابل تغییر نیست! یعنی هر چه هم تغییری بدهید بی نتیجه است و در بانک ذخیره نمیشود.

    یک چیزی اینجا در نظر داشته باشید که برای ویو داخلی فاکس هم خوب است. یعنی بروز کزدن ویو!

    صفحه Update Criteria برای بروز کردن ویو است. حالا هر قسمت را جدا جدا توضیح میدهم.
    ابتدا یک نکته وجود دارد: فیلدی باید به عنوان فیلدی که حالت Primary Key داشته باشد را در جداول مای سکوئل از قبل ساخته باشد و جبرا محتوات هر رکورد این فیلد منحصر به فرد است. (تعریف فیلد Primary) برای بروز شدن این فیلد ضروری بوده و در صورتی که تکراری از این فیلد در رکوردها مشاهده شود جدول بروز نمیشود! این فیلد را با تیک در قسمتی که کیلد نشان داده شده مشخص کنید. بعد از اینکه این کلید مشخص شد یک مداد هم نمایان میشود که فیلدی که باید بروز شود را میتوانید تیک بزنید.

    1- Table: این کامبو لیست جداول و همه جدوال را نشان میدهد. شما میتوانید هر جدول یا تمام جداول را انتخاب کنید. دقت کنید در صفحه فیلدهای جداول باید انتخاب شده باشند.
    2- دکمه Rest Key: تمام تیکهای فیلدهایی که باید بروز شود را و همچنین فیلد مطابقت را بر میدارد.
    3- Update All: تمام فیلدها را جهت بروز شدن انتخاب میکند. دقت کنید فیلد مطابقت باید تیک داشته تا این دکمه دستور فعال باشد.
    4- Send SQL Update: در صورتیکه این چک باکس تیک بخورد اطلاعات بروز میشود و اگر تیک نداشته باشد بروز نخواهد شد.
    5- Field Name Pane: در اینجا نام فیلدها و کلید و بروز شدن فیلد را مشخص میکنید که در بالا توضیح داده شد.
    6- SQL WHERE Clause includes: که نشان دهنده این است که در چه صورت جدول به روز شود؟ در واقع این به این درد میخورد که اگر کاربر دیگر جدول را تغییر داده بود چه رفتاری باید به انجام برسد؟
    7- Update Using: این هم معلوم است. و دو حالت بروز رسانی و حذف و ایجاد دارد که خود گویاست. به نظر من هم بروزرسانی کار درستی است چون حجم جدول زیاد نمیشود.

    دقت کنید در برنامه نویسی شبکه خطای 1585 "Record has been modified by another" or Error 1494 "Update conflict. Use TABLEUPDATE() to force the update or TABLEREVERT() to rollback". رخ ندهد.



    روش دیگری هم غیر از این است و آن روش استفاده از فرامین و دستورات به جای ساختن ویو و ارتباط ویژوال است. ارجحیتی که دستور دارد این است که اگر بانک شما دارای رمز باشد با این رمز بایستی در Connection ذخیره شود و کسی که خبره کار باشد بانک شما را باز کرده و رمز مای سکوئل شما را برمیدارد. راه مقابله با این کار این است که بانک در دل فایل EXE باشد. اما دستور فقط با ریفاکس قابل مشاهده است. یک مزیت دیگر اینکه دستور انعطاف دارد و از طریق SQLEXEC کنترلی روی کار دارید.

    یک چیزی که من چند مدتی با آن درگیر بودم این بود که Login نمایش داده نشود. برای آن دسته از عزیزانی که این موضوع را می خواهند بدانند متذکر میشوم که توضیحات در فایل راهنمای فاکس در قسمت SQLSETPROP( ) قرار دارد. منظور Displogin است.


    در استفاده از دستور هم بایستی اول کانکشن ساخته و ویوی قابل بروز رسانی ساخته شود و آنگاه شما جداولی مانند فاکس خواهید داشت. این را من به عهده خودتان می گذارم.



    خب دیگر شما براحتی میتوانید در فاکس از مای سکوئل بهره ببرید. و جذابیت آن را حس کنید! دیگر نگران حجم جداول و سرعت پردازش بانک خود نباشید. و کار را به مای سکوئل بپردازید. البته با تدبیر و دور اندیشی.

    البته این فقط تجربیات من بود. درستی و نادرستی آنرا ببخشید.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  18. #18
    ادامه:

    این یک مثال با کد:




    SQLSETPROP(0,"DispLogin",3)
    SQLSETPROP(0,"Asynchronous",.F.)
    SQLSETPROP(0,"BatchMode",.T.)
    SQLSETPROP(0,"PacketSize",4096)
    SQLSETPROP(0,"ConnectTimeOut",15)
    SQLSETPROP(0,"WaitTime",100)
    SQLSETPROP(0,"DispWarnings",.F.)
    *
    nH = SQLSTRINGCONNECT("DSN=person;DESC=MySQL ODBC 3.51 Driver DSN;DATABASE=person;SERVER=localhost;UID=;PASSWORD =;PORT=3306;OPTION=3;STMT=;")
    IF nH < 1
    RETURN .F.
    ENDIF
    *
    SQLEXEC(nH,"SELECT * FROM person Person","Person")
    *
    CURSORSETPROP("Tables","person","person")
    *
    CURSORSETPROP("KeyFieldList","nRelate","person ")
    *
    CURSORSETPROP("UpdatableFieldList","nRelate, cName, cFamily, lSex","person")
    CURSORSETPROP("UpdateNameList","nRelate Person.nRelate," +;
    " cName Person.cName," +;
    " cFamily Person.cFamily"+;
    " lSex person.lSex","Person")

    CURSORSETPROP("SendUpdates",.T.,"person")
    *
    BROWSE
    *!* USE
    *!* SQLDISCONNECT(nh)
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  19. #19
    برای توضیحات بیشتر از کتاب Book_cs.rar که در BriefCase آقای حیدری کیا است استفاده کنید. البته اون برای میکروسافت سکوئل سرور است و فرقی زیاد نداره. در اینجا جا داره از آقای حیدری کیا هم بخاطر این کتاب تشکر کنم.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  20. #20
    زحمت اصلی با شماست که دارید اطلاعات رو به دوستان میرسونید
    از تلاشتون ممنونم
    در تندیس های تخت جمشید هیچ کس در حال تعظیم نیست ، هیچ کس عصبانی نیست ، هیچ کس سرافکنده و شکست خورده نیست ، هیچ کس سوار بر اسب نیست ، هیچ قومی بر قوم دیگر برتر نیست ، هیچ کس برده نیست و هیچ تصویر خشنی دیده نمیشود.
    ************************************************** ******************************************
    اندیشه کن , آنگاه سخن گو تا از لغزش بر کنار باشی

  21. #21
    خواهش میکنم. زکات علم نشر است. (البته اگه چیزی بدونم!)
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  22. #22
    کاربر دائمی
    تاریخ عضویت
    دی 1382
    محل زندگی
    mashhad
    پست
    336
    آقا ای ول مرحبا

  23. #23
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107
    سلام
    لطفا برای موارد زیر هم توضیح بدین:
    1-تعریف کاربر و دادن سطح دسترسی
    2-نحوه گرفتن backup و restore کردن اطلاعات از طریق کد
    3-نحوه ساختن ستاپ برای برنامه
    ممنون
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  24. #24
    چشم حتما. :oops:
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  25. #25
    نحوه BackUp و Restore:



    در MySQL جداول به صورت فایلهای مجزا هستند و توضیح دادم که بانک فقط یک شاخه است. پس یک شاخه دیگر بسازید مثلا C:\Backup\MySQL\Person و اطلاعات جداول را در آن قرار دهید.

    اول با جدول از طریق دستورات ارتباط برقرار کنید سپس از طریق دستور SQLEXEC اول جدول را قفل کنید.
    سپس پشتیبان بگیرید و دوباره قفل را باز کنید.

    مثال:







    SQLSETPROP(0,"DispLogin",3)
    SQLSETPROP(0,"Asynchronous",.F.)
    SQLSETPROP(0,"BatchMode",.T.)
    SQLSETPROP(0,"PacketSize",4096)
    SQLSETPROP(0,"ConnectTimeOut",15)
    SQLSETPROP(0,"WaitTime",100)
    SQLSETPROP(0,"DispWarnings",.F.)
    *
    nH = SQLSTRINGCONNECT("DSN=person;DESC=MySQL ODBC 3.51 Driver DSN;DATABASE=person;SERVER=localhost;UID=;PASSWORD =;PORT=3306;OPTION=3;STMT=;")
    IF nH < 1
    RETURN .F.
    ENDIF
    *
    SQLEXEC(nH, "LOCK TABLES person WRITE;", "Person")
    SQLEXEC(nH, "BACKUP TABLE person TO 'c:/Backup/MySQL/Person';", "Person")
    SQLEXEC(nH, "UNLOCK TABLES;", "Person")





    آنچه مهم است این است که بدانید در لینوکس مسیر با / مشخص میشود و شما هم از همین روش استفاده کنید حتی در ویندوز.



    برگردانیدن پشتیبان:

    مثل توضیحات فوق با این تفاوت که به جای Backup از Restore استفاده کنید.



    بخشهای زیر در همان فایل راهنما را ببیند:




    13.5.2.2 BACKUP TABLE Syntax

    13.5.2.7 RESTORE TABLE Syntax

    13.4.5 LOCK TABLES and UNLOCK TABLES Syntax.

    5.6 Disaster Prevention and Recovery






    ساختن کاربر:

    قبل از هر کاری بایستی که محدودیت ورود برای مای سکوئل تعریف کنید دستور این کار:






    SQLEXEC(nH, "SET PASSWORD = PASSWORD('hi');", "Person")



    خب حالا دیگر کسی از خط دستور داس هم نمی تواند وارد سیستم شود. برای برداشتن رمز هم جای رمز را خالی بگذارید. مواظب باشید که در دستور SQLSTRINGCONNECT و SQLCONNECT هم از این رمز استفاده کنید. نام کاربر ODBC است. حالا از خط دستور داس باید تایپ کنید MySQL -p و رمز را بدهید.


    البته دقت کنید مسائلی که من مطرح میکنم منحصرابرای ویندوز است و در لینوکس قضیه کمی متفاوت است.


    این را بدانیم که تمام اطلاعات در شاخه c:\mysql\data\mysql ذخیره میشود و فایلهای حاوی User هم ایم اطلاعات را در خود جا دارند. این فایل را در فاکس باز میکنیم.







    SQLSETPROP(0,"DispLogin",3)
    SQLSETPROP(0,"Asynchronous",.F.)
    SQLSETPROP(0,"BatchMode",.T.)
    SQLSETPROP(0,"PacketSize",4096)
    SQLSETPROP(0,"ConnectTimeOut",15)
    SQLSETPROP(0,"WaitTime",100)
    SQLSETPROP(0,"DispWarnings",.F.)
    *
    nH = SQLSTRINGCONNECT("DSN=person;DESC=MySQL ODBC 3.51 Driver DSN;DATABASE=person;SERVER=localhost;UID=ODBC;PASS WORD=hi;PORT=3306;OPTION=3;STMT=;")
    IF nH < 1
    RETURN .F.
    ENDIF
    *
    SQLEXEC(nH,"SELECT * FROM Mysql.user Person","Person")
    BROWSE



    خب من چکار کردم!؟!؟!؟! از یک بانک جدول بانک دیگه را باز کردم !؟ آخه میدونید کار گرافیکی راحتتره.

    حال جدول را نگاه کنیم. خودتون میفیهید چیه نه؟ جالبه. خب دست بکار بشید و جلوی نفوذ بیگانه را بگیرد. البته اگه ببگانه خودی نباشه.


    یه دستور هست که روی این جدول کار میکنه یعنی GRANT

    یه نگاهی به این قسمت راهنما بیاندازید:





    13.5 Database Administration Statements
    13.5.1 Account Management Statements
    13.5.1.1 GRANT and REVOKE Syntax


    GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
    ON {tbl_name | * | *.* | db_name.*}
    TO user_name [IDENTIFIED BY [PASSWORD] 'password']
    [, user_name [IDENTIFIED BY [PASSWORD] 'password'] ...]
    [REQUIRE
    NONE |
    [{SSL| X509}]
    [CIPHER cipher [AND]]
    [ISSUER issuer [AND]]
    [SUBJECT subject]]
    [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |
    MAX_UPDATES_PER_HOUR # |
    MAX_CONNECTIONS_PER_HOUR #]]

    REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
    ON {tbl_name | * | *.* | db_name.*}
    FROM user_name [, user_name ...]

    REVOKE ALL PRIVILEGES,GRANT FROM user_name [, user_name ...]




    تابع Pssword هم کار encrypt داده ها را انجام میده.



    ساختن Setup
    مای سکوئل خودش یک ست آپ داره اما اگه راضیتون نمیکنه من قبلا توضیح دادم چه فایلهایی باید رجیستر بشه قسمت اول بود.

    برای ODBC اون هم ست آپ هست ولی من تا حالا نتونستم Setup اون را بفهمم چی میکنه. البته میدونم که یکسری Dll را نصب میکنه و روی فایل

    یه چیز دیگه اینه که شما برای اینکه برنامه تون توی یک کامپیوتر دیگه درست کار کنه تنظیماتی که در فاکس هنگام ساخت Connection انجام میدهید را نیز در فایل ODBC.ini در شاخه ویندوز فایل مقصد هم اعمال کنید البته با برنامه نویسی که کاربر متوجه نشه. (بد نیست یه نگاهی هم با این فایل بیاندازید.)
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  26. #26
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107
    تشکر :flower:
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  27. #27
    سلام

    یک برنامه گرافیکی برای کار با MySQL. جالبه!


    MySQL Query browser

    http://dev.mysql.com/doc/query-browser/en/index.html
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  28. #28
    سلام

    یه چیز مهم را یادم رفته بگم:

    فاکس پرو برای بروز رسانی جداول خودش شماره رکورد داره اما برای بروز رسانی Cursor باید از یک فیلد که در دیتابیس منحصر به فرد باشد استفاده کنه بهتر شما از یک فیلد که شاخص کاندیدیت داره استفاده کنید
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  29. #29
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107
    در SQL SERVER هم همینطوره؟
    خیلی وقت ها خودم و می کشم تا از این طریق آپدیت کنم اما TABLEUPDATE فالس بر می گردونه منم مستقیم از دستورات اسکیوال استفاده می کنم!
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  30. #30
    سلام

    مسلما SQL-92 یا ... استاندارد است و برای ارتباط تمام نرم افزارهای تحت این استانداردها مشابه عمل میکنند.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  31. #31
    چند نکته:
    (در لینوکس امتحان کرده ام.)

    میدانید فایل my.cnf برای تنظیمات است. یک خط دارد:
    bind-address = 127.0.0.1

    این خط اجازه می دهد فقط از این IP شما به mysql ارتباط داشته باشید.
    تذکر: در فایلهای config یک # در ابتدای خط معنی comment یا توضیح می دهد. پس تمام خطوطی که می خواهید غیر فعال کنید را با این گزینه غیر فعال کنید.

    نکته دوم:
    البته شاید اساتید بزرگ بدانند اما برای تست اینکه یک پورت روی یک آدرس کار میکند:

    telnet host port
    باید جواب بگیرید. مثلا برای تست اینکه یک سایت http دارد:

    telnet yahoo.com 80
    اما برای تست mysql از پورت استاندارد 3306 استفاده کنید. (ممکن است شما آنرا در فایل my.cnf تغییر داده باشید: port = 3306 )

    اگر ماشین لینوکس دارید با netstat -nl | grep mysql می توانید تست کنید ماشین شما در حال گوش کردن به mysql است؟

    نکته سوم:

    GRANT ALL PRIVILEGES ON *.* TO 'reza'@'srv4'
    IDENTIFIED BY 'pass' WITH GRANT OPTION;
    دستور بالا برای ساختن یک کاربر است با نام reza که از srv4 می تواند به mysql متصل شود و رمز آن pass است. خب حالا برای اینکه بتواند از همه جا وارد شود به جای srv4 باید % بگذارید. خالی گذاشتن رمز هم رمز را از بین خواهد برد.

    یکسری از تنظیمات در my.cnf انجام می شود مثلااینکه از چه پورتی وارد شوید یابافر های چه میزان باشند.

    اما یک چیز جالب این است که یک گزینه دارد:

    bind-address

    که می توانید بگویید چه IP هایی اجازه دسترسی دارند.
    آخرین ویرایش به وسیله rezaTavak : یک شنبه 02 دی 1386 در 10:05 صبح
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  32. #32
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: فاکس پرو و MySQL

    در مورد اتصال به دیتابیس mysql در سایت خودم چه مراحلی را باید طی کنم ؟

  33. #33

    نقل قول: فاکس پرو و MySQL

    اگر از راه دور است ابتدا باید مجوز لازم را داشته باشید. یعنی در MySQL :

    GRANT ALL PRIVILEGES ON *.* TO 'reza'@'%'
    IDENTIFIED BY 'pass' WITH GRANT OPTION;
    سپس در فاکس در مسیر دیتابیس آدرس سرور قرار می گیرد:

    a = SQLSTRINGCONNECT("DSN=Test;DESC=MySQL ODBC 3.51 Driver DSN;DATABASE=test;SERVER=srv.com;UID=;PASSWORD=;PO RT=3306;OPTION=3;STMT=;",.T.)

    به جای srv.com آدرس سایت را قرار دهید یا IP قرار دهید.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  34. #34
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: فاکس پرو و MySQL

    متوجه مورد اول نشدم که باید چکار کنم.
    اما در مورد مورد د وم هم پیغام می ده :
    connection handle is invalid

  35. #35

    نقل قول: فاکس پرو و MySQL

    در mySQL باید اجازه داشته باشید که به آن وصل شوید. این دستور شما را به عنوان یک کاربر برای mySQL تعریف میکند که اجازه همه کاری دارید: on و نام کاربر شما: reza و کامپیوتری که از آن متصل خواهید شد: ٪ برای هر کامپیوتری pass رمز شما.


    دستور دوم را بهتر است اول بطریق ویژوال انجام دهید تا راحتتر باشید. اما این یک مثال است و ممکن است برای شما طوری دیگر باشد. هر پارامتر را بسته به شرایط تعریف کنید.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  36. #36
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: فاکس پرو و MySQL

    من از طریق سایتم به دیتابیسم متصل می شوم . پس کاربری استفاده می کنم معتبر می باشد.
    آیا دستور grant all ... یک دستور است ؟ کجا باید بنویسم ؟

    در مورد اینکه از طریق ویژوال ، در بخشی از من مسیر می خواهد و من چگونه مسیر ftp را بدهم.؟؟
    آقا رضا اگر می شه واضح تر بگید من کاملا گیج شدم.
    نکته : من روی سیستمم فقط wamp نصب کردم . آیا بازهم نیاز به چیز دیگریست؟؟ به دلیل اینکه من درایور مای اسکیوال را ندارم . ممکنه از این باشه؟
    در ویژوال هم odbc my sql ندیدم . لینک آن را از طریق همین تاپیک در صفحه اول زدم اما نتونستم پیدا کنم . لینک مستقیمی دارید؟؟
    با تشکر

  37. #37

    نقل قول: فاکس پرو و MySQL

    اولا برای هر ارتباطی خارج از فاکس پرو باید ODBC آن در سیستم شما نصب باشد ثانیا اون مقاله مال قبل از خرید mysql توسط سان است و به الطبع سان با ایرانیها مشکل دارد و اجازه دانلود نمیدهد.
    http://dev.mysql.com/downloads/connector/odbc/5.1.html

    این مسیر دانلود است.

    مسیر ftp نیست. یعنی فقط اسم سایت است ftp خودش پروتکلی است که از پورت ۲۱ استفاده میکند و mysql به طور پیش فرض 3306 پورت پیش فرض است ftp ربطی به mysql ندارد. یعنی شما از طریق پورت به دیتابیسها دسترسی دارید و آدرس سایت نباید شامل پروتکل باشد مثلا yahoo.com باشد نه بیشتر.

    wamp یعنی Windows,Apache,MySQL,Php که خود php میتواند بدون ODBC و مستقیم به mySQL وصل شود پس نیازی به ODBC ندارد. اما فاکس بدون ODBC نمیتواند وصل شود. آپاچی هم برای بالا آوردن php است و html که در واقع مانند IIS ویندوز است.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  38. #38
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    واسه دانلود این پیغامو می ده

    Access Denied

    Our export control systems have identified your request for access as non-compliant to the United States export control laws.
    A required IP lookup revealed that your IP address is originating from an embargoed country. Therefore, we are unable to grant you access from your current IP location.
    آقا رضا ! چکار باید انجام بدم تا بتونم odbc دانلود کنم؟

    پس الان مشکل من فقط این است که درایور ندارم؟
    و در مورد grant all چیزی نفرمودید..
    آخرین ویرایش به وسیله rezaTavak : یک شنبه 12 خرداد 1387 در 13:12 عصر

  39. #39

    نقل قول: فاکس پرو و MySQL

    بله باید درایور را داشته باشید.

    در مورد grant هم قبلا گفتم :
    در mySQL باید اجازه داشته باشید که به آن وصل شوید. این دستور شما را به عنوان یک کاربر برای mySQL تعریف میکند که اجازه همه کاری دارید: on و نام کاربر شما: reza و کامپیوتری که از آن متصل خواهید شد: ٪ برای هر کامپیوتری pass رمز شما.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  40. #40
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: فاکس پرو و MySQL

    odbc را چطور دانلود کنم؟
    دستور فوق را در خود myadmin سایتم بنویسم؟

صفحه 1 از 2 12 آخرآخر

تاپیک های مشابه

  1. خطا در mysql
    نوشته شده توسط sedaghat23 در بخش PHP
    پاسخ: 7
    آخرین پست: چهارشنبه 11 آذر 1388, 21:35 عصر
  2. دسترسی مستقیم به فایل بانک اطلاعاتی mysql!!
    نوشته شده توسط piter1355 در بخش MySQL
    پاسخ: 4
    آخرین پست: سه شنبه 16 آبان 1385, 07:53 صبح
  3. پیغام خطای MySQL
    نوشته شده توسط sedaghat23 در بخش PHP
    پاسخ: 1
    آخرین پست: شنبه 09 اردیبهشت 1385, 01:11 صبح
  4. EMS Mysql & mysql-front
    نوشته شده توسط imanghafari در بخش MySQL
    پاسخ: 4
    آخرین پست: یک شنبه 20 فروردین 1385, 11:16 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •