PDA

View Full Version : اتصال به دیتابیس Sql



ermia2008
سه شنبه 12 شهریور 1387, 14:49 عصر
سلام دوستان.

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

- دیتابیس من SQL2000 هست. عبارتی که برای Class.forName باید بنویسم چیه؟ آیا این عبارت رو باید از جایی بدست بیارم یا اینکه برای هر دیتابیسی که استفاده میشه یه چیز ثابتیه؟

- برای متصل شدن باید تغییراتی در داخل دیتابیسم بدم یا نه؟

والا من هر Sample که دانلود کردم و اجراش کردم بهم این Error رو میده:

Unable to load Driver Class

دوستان اگه منو راهنمایی کنن ممنون میشم.

javaphantom
سه شنبه 12 شهریور 1387, 16:37 عصر
سلام دوستان.

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

- دیتابیس من SQL2000 هست. عبارتی که برای Class.forName باید بنویسم چیه؟ آیا این عبارت رو باید از جایی بدست بیارم یا اینکه برای هر دیتابیسی که استفاده میشه یه چیز ثابتیه؟

- برای متصل شدن باید تغییراتی در داخل دیتابیسم بدم یا نه؟

والا من هر Sample که دانلود کردم و اجراش کردم بهم این Error رو میده:

Unable to load Driver Class

دوستان اگه منو راهنمایی کنن ممنون میشم.

http://msdn.microsoft.com/en-us/data/aa937724.aspx
باید بهت یک jar فایل بده که همون driver تو هست ادرس jar فایل رو به classpath اضافه می کنی و بعدش برنامتو ران کن

ermia2008
چهارشنبه 13 شهریور 1387, 00:05 صبح
http://msdn.microsoft.com/en-us/data/aa937724.aspx
باید بهت یک jar فایل بده که همون driver تو هست ادرس jar فایل رو به classpath اضافه می کنی و بعدش برنامتو ران کن


سلام دوست عزیز.
ممنون از راهنماییتون. ولی مشکل من هنوز حل نشده. از تو سایتی که گفتین SQL Server 2000 Driver for JDBC Service Pack3 (http://www.microsoft.com/downloads/info.aspx?na=47&p=2&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=07287b11-0502-461a-b138-2aa54bfdc03a&u=details.aspx%3ffamilyid%3d4F8F2F01-1ED7-4C4D-8F7B-3D47969E66AE%26displaylang%3den) رو دانلود کردم و نصبش کردم.

راستش من هنوز نفهمیدم که واسه آرگومان Class.forName و URL چی باید بنویسم و اصلا اینهارو از کجا باید بدست بیارم؟؟؟
آیا چیز خاصی باید رو سیستمم نصب بشه؟

اگه منو راهنمایی کنین خیلی خیلی ازتون ممنون میشم. آخه من JDBC رو تازه شروع کردمو خیلی آشنا نیستم.چند تا EBook هم خوندم ولی هیچ کدوم از پایه شروع به یاد دادن نکردن و در مورد آماده کردن سیستم برای اتصال و پیش نیازهای اتصال به بانک و ... حرفی نزدن و یه ضرب رفتن سر اصل مطلب!
ممنون میشم اگه کمکم کنید.

saeed_Z_F
چهارشنبه 13 شهریور 1387, 09:02 صبح
سلام

com.microsoft.jdbc.sqlserver.SQLServerDriver

port = 1433

jdbc:microsoft:sqlserver://localhost:1433;databaseName=DBName

امیدوارم کارتون رو راه بیاندازد .

ermia2008
چهارشنبه 13 شهریور 1387, 18:00 عصر
سلام دوستان.

من هنوز مشکلم حل نشده. مشکل تو همون درایور sqlهست.
من با sqlserver 2000 کار میکنم. درایورهای مربوط بهش برای کار با JDBC رو دانلود کردم. 3 تا فایل jar داخلش بود:

msbase.jar
mssqlserver.jar
msutil.jar

این فایل ها رو به ClassPath سیستمم اضافه کردم. ولی هنوز نمیتونه درایور رو load کنه.
البته من درایور مربوط به sql2005 رو هم یه بار به classPath اضافه کردم (sqljdbc.jar)و مشکل () class.forname حل شده بود.ولی از اونجایی که دیتابیسم sql2000 هست این error رو میداد:

No suitable driver for jdbc:microsoft...


مشکل از کجاست؟؟؟ اصلا فایل های jar ای که دانلود کردم همیناست یا چیز دیگه ای باید باشه؟

ممنون میشم اگه راهنماییم کنین.

javaphantom
پنج شنبه 14 شهریور 1387, 04:25 صبح
سلام دوستان.

من هنوز مشکلم حل نشده. مشکل تو همون درایور sqlهست.
من با sqlserver 2000 کار میکنم. درایورهای مربوط بهش برای کار با JDBC رو دانلود کردم. 3 تا فایل jar داخلش بود:

msbase.jar
mssqlserver.jar
msutil.jar

این فایل ها رو به ClassPath سیستمم اضافه کردم. ولی هنوز نمیتونه درایور رو load کنه.
البته من درایور مربوط به sql2005 رو هم یه بار به classPath اضافه کردم (sqljdbc.jar)و مشکل () class.forname حل شده بود.ولی از اونجایی که دیتابیسم sql2000 هست این error رو میداد:

No suitable driver for jdbc:microsoft...


مشکل از کجاست؟؟؟ اصلا فایل های jar ای که دانلود کردم همیناست یا چیز دیگه ای باید باشه؟

ممنون میشم اگه راهنماییم کنین.

اون سه تا جر فایلی که دانلود کردی کاملا درسته برای ورژن بانک اطلاعاتیت اما بریم چند چیز رو باهم چک کنیم ببینم چرا کارمون می لنگه
همانطور که گفتند شما باید یک همچین قسمت کدی داسته باشید

try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (Exception ex) {
System.out.println(ex);
}

خواهش می کنم فقط قسمت کد بالا رو نوشته و اجرا کنید تا ببنیم دقیق چه exceptionی رو می ده. شما می گید نمی شناسه.
خوب برای اینکه مطمعن بشیم همه کاره ما درست هست این کار رو می کنیم
۱. اون jar فایلهایی که دانلود کردین رو به سراغ مسیرشون برین. این jar فایلها مانند rar فایل هستند اگر برنامه rar روی سیستم داشته باشین برای اینکه مطمعن بشیم داخل این jar فایلها سالمه باید داخل یکی از آنها فلدری به نام com بعد در داخل آن فلدری به نام microsoft وبعد از آن در داخل آن فلدر نیز فلدر دیگری به نام jdbc و در نهایت کلاسی با نام SQLServerDriver.class وجود داشته باشه. در داخل این سه جر فایل این مسئله را چک کنید.

دوم می مونه set کردن classpath من احساس می کنیم در این قسمت شما باید بیشتر دقت کنید که این سه تا jar فایل رو به classpath برنامتون اضافه کنید بطوریه اگر با IDE خواصی کار می کنید هنگامی که مطمعن شدید که این سه jAR فایل رو به classpath اضافه کردید باید داخل کد برنامه در IDE برای مثال این چنین عمل کنید
import com.micorsoft و هنگامی که '.' بعدی رو فشار دادید باید package بعدی رو بهتون نشون بده و این نشون می ده که ide شما به classpath برنامه شما jar فایلها رو اضافه کرده.در صورتی که از ide استفاده نمی کنید اعلام کنید تا بگم چه جوری عمل کنید

mojtaba_java
پنج شنبه 14 شهریور 1387, 22:59 عصر
سلام
ببين دوست عزيز براي اتصال به بانك راههاي زيادي وجود داره كه بنا به اون راه كد شما نيز يه تغييراتي ميكنه . اگر از odbc بخواهي استفاده كني بايد اين كد را نوشته باشي



Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection =DriverManager.getConnection("jdbc:odbc:asm DataBase") ;
setStatement(connection.createStatement()) ;



در اين روش كدها ثابت است و احتياجي نيست چيزي از جايي بگيري تنها چيزي كه در اين كد عوض ميشه نام بانكي است كه در odbc از ديتابيس به آن اتصال داديد.
بعدشم بايد در ControlPanel در administrative Tools در odbc ارتباطتو درست كرده باشي تا بتوني ازش استفاده كني. :چشمک:
در ضمن اينم بگم اكثر مثال ها با اين روش بانك را درست كرده اند و شايد شما ارتباط odbc آن ها را فراموش كرده ايد اتصال دهيد.

ermia2008
پنج شنبه 14 شهریور 1387, 23:13 عصر
سلام دوستان.

خيلي ممنون از راهنماييتون.
فکر کنم مشکل فايل هاي جر حل شده. اما وقتي برنامه رو تو netBean اجرا مي کنم اين error رو ميگيره :

SQL Exception: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs

اما وقتي برنامه رو توي cmd دستي اجرا ميکنم اين error رو ميگيره:

Microsoft][SQLserver2000 for jdbc]Error establishing socket]

واسه اين مشکل خيلي هم تو اينترنت گشتم چند تا دليل براش پيدا کردم:

1.غير فعال بودن TCP/IP
2. فعال بودن فايروال
3.درست نبودن port
4.استفاده از IP بجاي Computer name

من همه اين موارد رو چک کردم ولي مشکل حل نشد.


اينم کد برنامه که یهsample کوچیکه:






import java.sql.*;



public class Main {

public static void main(String[] args) throws InstantiationException
{


try {

Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
}

catch (IllegalAccessException ex) {
ex.printStackTrace();
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (InstantiationException ex) {
ex.printStackTrace();
}

System.out.println("Driver Successfully!");



try
{
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs;");

System.out.println("2.Connection Successfully!");

Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT title_id From titles");

while(rs.next())
{
System.out.println(rs.getString("title_id"));
}

rs.close();
stmt.close();
con.close();

}//end of try

catch(SQLException se)
{
System.out.println("SQL Exception: " + se.getMessage());
//se.printStackTrace(System.out);
}




}

}


خروجي اين برنامه تو سيستم من اينه:


!Driver Successfully
Microsoft][SQLserver2000 for jdbc]Error establishing socket]


به نظرتون مشکل از کجا ميتونه باشه؟؟؟

javaphantom
جمعه 15 شهریور 1387, 11:36 صبح
سلام دوستان.

خيلي ممنون از راهنماييتون.
فکر کنم مشکل فايل هاي جر حل شده. اما وقتي برنامه رو تو netBean اجرا مي کنم اين error رو ميگيره :

SQL Exception: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs

اما وقتي برنامه رو توي cmd دستي اجرا ميکنم اين error رو ميگيره:

Microsoft][SQLserver2000 for jdbc]Error establishing socket]

واسه اين مشکل خيلي هم تو اينترنت گشتم چند تا دليل براش پيدا کردم:

1.غير فعال بودن TCP/IP
2. فعال بودن فايروال
3.درست نبودن port
4.استفاده از IP بجاي Computer name

من همه اين موارد رو چک کردم ولي مشکل حل نشد.


اينم کد برنامه که یهsample کوچیکه:






import java.sql.*;



public class Main {

public static void main(String[] args) throws InstantiationException
{


try {

Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
}

catch (IllegalAccessException ex) {
ex.printStackTrace();
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (InstantiationException ex) {
ex.printStackTrace();
}

System.out.println("Driver Successfully!");



try
{
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs;");

System.out.println("2.Connection Successfully!");

Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT title_id From titles");

while(rs.next())
{
System.out.println(rs.getString("title_id"));
}

rs.close();
stmt.close();
con.close();

}//end of try

catch(SQLException se)
{
System.out.println("SQL Exception: " + se.getMessage());
//se.printStackTrace(System.out);
}




}

}


خروجي اين برنامه تو سيستم من اينه:


!Driver Successfully
Microsoft][SQLserver2000 for jdbc]Error establishing socket]


به نظرتون مشکل از کجا ميتونه باشه؟؟؟

در قست
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs;");

این رو قرار بده ببین چی می شه
منتها من user , password شما رو نمی دونم خودت جای گزین کن

jdbc:microsoft:sqlserver://ServerName:1433;DatabaseName=dmo1o2d",user,password

ermia2008
جمعه 15 شهریور 1387, 15:18 عصر
در قست
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs;");

این رو قرار بده ببین چی می شه
منتها من user , password شما رو نمی دونم خودت جای گزین کن

jdbc:microsoft:sqlserver://ServerName:1433;DatabaseName=dmo1o2d",user,password

این کاری که گفتین رو انجام دادم ولی هنوز همون Error قبلی رو میده:


Microsoft][SQLserver2000 for jdbc]Error establishing socket]

ermia2008
یک شنبه 17 شهریور 1387, 14:02 عصر
سلام دوستان.

آخر سر مجبور شدم sql2005 رو نصب کنم. اما اونم باز مشکل داشت.
اما بالاخره پس از چند روز گشت و گذار تو اینترنت مشکل رو فهمیدم.
مشکل از TCP/IP بود.
TCP/IP که تو قسمت porotocols for SQLEXPRESS هست Disable بود. در ضمن پورت پیش فرضشم 2892 بود. که من 1433 که پورت پیش فرض تو sql2000 بود وارد میکردم.

ممنون از راهنمایی های همه دوستان.