ODBC (RUST & ms ACCESS \ SQL server)
-
איך להתחבר ל ODBC?
אני רוצה להתחבר אליו מקוד RUST באמצעות הספריה הזו odbc_api
כך שאני אמור למלא כאן נכונה את השדות:
let mut connection = environment.connect( "DataSourceName", "Username", "Password", ConnectionOptions::default(), )?;
אך אני לא מכיר את ODBC ולא יודע מה אני אמור למלא.
לכאו' צריך קודם לחבר את MS ACCESS ל ODBC או לצפות בחיבור כדי לדעת מה הסיסמה וכו', אך לא הבנתי איך אני מחבר את המסד נתונים ל ODBC.ב'התחל' חיפשתי ODBC והגעתי למסך כזה
ולאחר מכן לא הצלחתי להמשיך.
תודה רבה!
-
@Y-Excel-Access דוגמת הקוד שהבאת הוא עבור התחברות בשיטת DSN
נראה לי שיותר מומלץ לך להתחבר בשיטת connection string.
עיין כאן: https://www.connectionstrings.com/access לתיעוד על פורמט המחרוזת עבור קבצי אקסס -
בקיצור נמרץ:
- לחץ על התחל, ותרשום ODBC, ובחר בקידוד הסיביות הנכון 64 או 32 ביט
- שים לב שעליך להגדיר את החיבור בלשונית הנכונה: User DSN יהיה פעיל רק עבור המשתמש המחובר, ואילו System DSN יוגדר עבור כל המשתמשים
- לחץ על Add > Microsoft Access Driver < Finish
- בחלונית שנפתחה, תן שם לחיבור. שם זה ישמש אותך אח"כ להתחברות.
- לחץ על בחירה... ונווט למיקום של קובץ הנתונים של אקסס.
- לחץ על התחל, ותרשום ODBC, ובחר בקידוד הסיביות הנכון 64 או 32 ביט
-
@yossiz כתב בODBC (RUST & ms ACCESS \ SQL server):
נראה לי שיותר מומלץ לך להתחבר בשיטת connection string.
אני נתקלתי בבעיות עם זה בקבצים חדשים של אקסס accdb. עם הקבצים היישנים mdb אין בעיה.
מלבד זאת, ב-odbc יש יתרון שאפשר להפעיל לוגים של פעולות ושגיאות. -
תודה רבה.
לא הצלחתי, כנראה בגלל חוסר הידע שלי ב ODBC.
על ההצעה הראשונה של @yossiz עולה לי שגיאה כזו:
Error: Diagnostics { record: State: IM002, Native error: 0, Message: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, function: "SQLDriverConnect" } error: process didn't exit successfully: `target\debug\ms_access.exe` (exit code: 1)
והקוד שלי:
let connected = env.connect_with_connection_string( r"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\{{{my_name_user}}}\projects\rust\ms_access\access.accdb;Persist Security Info=False;" ,ConnectionOptions::default())?;
(החיבור הוא ל ACCESS 2010 ללא סיסמה, וכפי הדוגמא המובאת שם).
ועל הפתרון שהציע @OdedDvir זה מביא לי הודעת שגיאה:
Error: Diagnostics { record: State: IM014, Native error: 0, Message: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application, function: "SQLConnect" } error: process didn't exit successfully: `target\debug\ms_access.exe` (exit code: 1)
(כלומר שלא הזנתי בכלל טוב...)
הקוד שלי:let connected = env.connect( "my_access", "ny_name_user", "", ConnectionOptions::default() )?;
לא הבנתי מה אני אמור להזין בכל שדה. הרי אין לי שום סיסמא, ואת שם המשתמש של המחשב כתבתי, אם כן מה חסר?
ושוב תודה רבה!
-
@Y-Excel-Access מנוסח השגיאה שהבאת נראה שיש חוסר התאמה בין הארכיטקטורות שבהן אתה משתמש, כנראה חוסר תאימות של גרסאות 64/32 ביט.
אתה צריך להגדיר חיבור ODBC באותה גרסת סיביות שבה אתה משתמש ב Rust toolchain