ورود

View Full Version : سوال: ارتباط با Sql Server



M0TR!X
سه شنبه 07 آذر 1391, 16:04 عصر
سلام.

یه نمونه کد میخوام واسه ارتبابط با Sql server

maktoom
سه شنبه 07 آذر 1391, 19:19 عصر
سلام
سینتکسهای ارتباط با دیتابیس های مختلف تفاوت چندانی نداره. تفاوت در شماره پورتیه که در خط url اعلام می کنید. که برای اس کیو ال سرور 1433 هستش.
آیا مشکل شما در Statement و Connection و ... است؟
اینجا (http://barnamenevis.org/showthread.php?367709-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A8%D9%87-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3sqlserve r2008) رو ببینید.

maktoom
سه شنبه 07 آذر 1391, 19:23 عصر
در این لینک (http://stackoverflow.com/questions/5616898/java-sql-sqlexception-no-suitable-driver-found-for-jdbcmicrosoftsqlserver) هم می تونید یک کلاس رو ببینید که نگارنده برای ارتباط با دیتابیسش از این کلاس استفاده کرده.
اینجا (http://forums.devarticles.com/java-development-38/connecting-java-with-sql-server-4288.html) و اینجا (http://stackoverflow.com/questions/1310536/how-to-make-java-work-with-sql-server) و اینجا (http://www.windowsazure.com/en-us/develop/java/how-to-guides/using-sql-azure-in-java/) رو هم ببینید.

همایون افشاری
سه شنبه 07 آذر 1391, 19:35 عصر
با تشکر از maktoom می خواستم فقط یه نکته رو بگم و اون اینکه توی فروم های پرکاربرد هم که نگاه کنید (مثل stackoverflow) معمولا لینک حل مشکل خارج از خود سایت داده نمیشه، بلکه خود پاسخ دهنده سعی میکنه یه راه حل ارایه بده. در مورد لینک ها هم معمولا نویسنده خودش لینک رو خونده، یه کم مسئله رو باز میکنه و هر جا ذکر منبع لازم بود لینک رو میاره.
به هر حال الان با وجود google دیگه بدست آوردن چند تا لینک که زیاد مشکل نیست.

maktoom
سه شنبه 07 آذر 1391, 23:45 عصر
سلام آقای افشاری
بنده ایشون رو از یه تاپیک دیگه (http://barnamenevis.org/showthread.php?352170-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D9%85%D9%86-(-%D8%AF%D8%B1-%D8%B7%D9%88%D9%84-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%D9%BE%D8%B1%D9%88%DA%98%D9%87-)&p=1611895#post1611895) می شناختم.
شناخت بنده از ایشون در این اندازه بود که ایشون کار رو بلده و قبلا کار کرده یه کلید میخواد.
لینک اول هم که از داخل خود سایته.
بعلاوه نظر بنده اینه که پاسخ نهایی تنها در صورت رخ دادن چند پست و مشخص شدن دقیق سوال باید گفته بشه.
اغلب موارد مشکل توی الگوریتم و یا نکته کلیدیه نه توانایی فرد برای پیدا کردن پاسخ.
بنده با توجه به شناختی که از ایشون داشتم راهنمایی کردم.
اگه شما این تاپیک رو مطرح کرده بودید قطعا طور دیگه ای سعی می کردم پاسخ بدم.
من از روحیه آموزشی بهره می برم و نه روحیه جواب آماده دادن.
من الان 3 تا لینک رو گشتم دیدم با توجه به سواد و تجربم اینا به درد ایشون می خوره براشون گذاشتم.
اگه خودم می خواستم بگم یا از اونجا قطعه مورد نظر رو کپی کنم بیارم ارزشمند بود؟؟؟
جدا این کپی کاری ها از نظر شما ارزشمنده؟
توی پروژه هایی که ابتدای کار _قبل از استفاده از هایبرنت_ استفاده می کردم زیاد از کد اتصال به دیتابیس استفاده می کردم. نمونه کد رو هم دارم. اما این کپی پیست ها از نظرم من بی ارزشه.
من آموزش رو بیشتر می پسندم.
قطعا بدونید اگه از این لینکها دوستمون بعد از خوندن سوالی مطرح کنن در حد توان پاسخگو خواهم بود.
و می دونم در این تالار دیگر دوستانی هستن که بیان اینجا و پاسخهای خوبی بدن و بحث باز بشه.
یه کپی پیست امضا کننده مرگ همچین فرصتاییه.

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

maktoom
چهارشنبه 08 آذر 1391, 00:11 صبح
از وقتی تحت وب کار می کنم و با هایبرنت کار کردم، هیشه حسرت خوردم چرا دوستان به سهولت استفاده از هایبرنت رو نمیارن تا از شر کد نویسی برای اتصال به دیتابیس راحت بشن.
در واقع هایبرنیت شبیه_تاکید می کنم شبیه_ همین کلاسیه که توی اون گفته بودم. دلیل اینکه اصلا از این لینک استفاده کردم این بود که اگه این دوستمون و یا کس دیگه ای رفت سمت هایبرنت بفهمه کار چقدر اونجا منطقیه.
لازم نیست برای هربار اتصال کانکشن و کوئری و استیت و حلقه و اینا بذاریم.
اما خب... گاهی واقعا نمیشه اینجوری کد نزد.
این یه نمونه است. تا اونجا که یادم میاد با یه ورژن خاصی از اس کیو ال مشکل داشتیم. یادم نمیاد کدوم ورژنش بود. اما این کد:
import java.sql.*;
public class Ex2 {
Connection con;
Statement st;
ResultSet rs;
public Ex2(String query){
System.out.println("IN Const1");
try{
System.out.println("IN try");
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String dbName = "HOME";
String user = "sa";
String password = "JUL@2012";
//the name of my SQL SERVER 2005 instance
String SqlServerInstance = "SQLEXPRESS";
String url = "jdbc:jtds:sqlserver://localhost:1433";
url = url + "/" + dbName;
url = url + ";" + SqlServerInstance;
con = DriverManager.getConnection(url, user, password);
System.out.println("nach DriverManager");
st = con.createStatement();
st.executeQuery(query);
rs = st.getResultSet();
while ( rs.next() ){
System.out.println(rs.getString(0));
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
}
catch(Exception e){
e.printStackTrace();
System.out.println("Exception: " + e.getMessage());
}
}
public static void main(String[] argv){
System.out.println("IN MAIN");
Ex2 test = new Ex2("SELECT * FROM HOME.dbo.employee;");
}
}*
از اینجا (http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx) درایور خود ماکروسافت واسه اس کیو ال رو بگیرید.
و به طور کلی به این فرمت هستش:
private boolean openConnection(String strServerIPAddress, String strDatabaseName, String strUserName, String strPassword) {
//String connect to SQL server
String url = "jdbc:microsoft:sqlserver://" + strServerIPAddress + ":1433" +
";DatabaseName=" + strDatabaseName;

try
{
//Loading the driver...
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );
}
catch( java.lang.ClassNotFoundException e )
{
return false;
}

try
{
//Buiding a Connection
m_Conn = DriverManager.getConnection(url, strUserName, strPassword);
if(m_Conn == null )
return false;
}
catch( java.sql.SQLException e )
{
switch( e.getErrorCode() )
{
//...
return false;
}
}
return true;
}
در کد اولیه درایور از این سایت (sourceforge.net) تهیه شده بوده اما در کد دوم از درایور خود ماکروسافت. در کل اول باید مطمئن بشید که درایورتون درست نصب شده(.jar رو که گرفتید اون رو بذارید داخل CLASSPATH)

منبع (http://stackoverflow.com/questions/11317100/java-sql-sqlexception-network-error-ioexception-connection-timed-out-connect)
اگه در مورد دیتابیس و اتصال به اون بطور کلی سوالی دارید فیلم آموزشی آقای کیانیان می تونه مشکلتون رو برای همیشه برطرف بکنه.
در کد دوم به جای عبارت:
strServerIPAddress
اگه لوکال استفاده می کنید باید این رو بذارید:
localhost\\
در نهایت از دوستان می خوام تا راه حل های دیگه رو بگن تا درصورتی که این تاپیک به پرباری رسید بشه اعلانش کرد.
موفق باشید./