ارتباط با MySQL در جاوا به وسیله JDBC

در متفرقه

امروز می خوام نحوه ارتباط با MYSQL رو تو جاوا با کمک JDBC توضیح بدم

قبل از هر چیزی تابلوئه که باید MYSQL رو نصب کرده باشید بعد username و password ای برای ارتباط با پایگاه داده اتون دارید رو هم یادتون باشه

برای ارتباط با SERVER های مختلف باید درایورشون رو به صورت جدا دانلود کنید مثلاً اینجا قرار به MYSQL وصل بشیم پس باید درایور اتصال به MYSQL رو از قبل دانلودیده باشیم برای اینکار دو راه دارید یا برید درایور MYSQL رو از سایتش دانلود کنید که لینکش رو هم این زیر آورده ام یا اگه از محیط های برنامه نویسی مثل نسخه های جدید NetBeans استفاده می کنید که دیگه خیر و برکت تو خودشون هست. پس اونایی که می خوان همینجوری کد های این متن رو بنویسن باید خودشون درایور خوبه رو از آدرس زیر دانلود کنن اونایی هم که نت بینز دارن که خیر و برکت تو خودش هست اینم لینک:

 

http://www.mysql.com/products/connector

از تو آدرس بالا کانکتور مخصوص جاوا رو دانلود کنید-JDBC Driver for MySQL

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

 

و اما بریم سراغ نت بینز

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

به هر حال

بریم ادامه مطلب

خب اول باید یه پروژه خام جاوا ایجاد کنیم

برای اینکار برید منوی File و بعد گزینه New Project رو انتخاب کنید

تو پنجره ای که باز میشه اول java و بعد java application  رو انتخاب کنید مثل شکل زیر

بعد هم next رو می زنیم و تو پنجره جدیدی که باز میشه واسه پروژه امون یه اسم انتخاب می کنیم که هر چی می تونه باشه دیگه مثلاً من گذاشتم mysql_jdbc

 

و سر آخر finish

حالا پروژه امون به خوبی و خوشی ایجاد شده قبل از اینکه این آموزش رو ادامه بدید برید سرور mysql رو استارت کنید

دیگه توی این آموزش فرضم بر اینه که بلدید چی جوری با mysql کار کنید اگه مشکلی دارید نظر بدید اونجا جواب میدم ولی الآن پیش فرض اینه که نحوه کار با mysql رو بلدید

 

خب بریم ادامه کار

توی محیط net beans تو پنجره Projects روی اسم پروژه کلیک کنید تا منوی درختیش به صورت شکل زیر باز بشه

روی گزینه Libraries کلیک راست کنید و ازمنویی که باز میشه گزینه Add Library رو انتخاب کنید

یه  پنجره مثل شکل زیر باز میشه که توش باید برید گزینه MySQL JDBC Driver رو انتخاب کنید

و رو Add Library  کلیک کنید و خلاص

دیگه درایور مای اس کیو ال رو هم که اضافه کردیم فقط مونده یه چند خط کد و تمام :دی ، پس بریم کد بزنیم

یه کلاس ایجاد کنید به نام MySQDBAdmin  و کد زیر رو توش بزنید

  1. /** * @author safeallah ramezanzadeh * */
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.util.logging.Level;
  5. import java.util.logging.Logger;
  6.  
  7. public class MySQDBAdmin {
  8.  
  9. Connection con;
  10. String username="root";
  11. String password="1234";
  12.  
  13. public MySQDBAdmin(){
  14.  
  15. try {
  16. Class.forName("com.mysql.jdbc.Driver");
  17. con=DriverManager.getConnection( "jdbc:mysql://localhost/",username,password);
  18. System.out.println("Connected to mysql ");
  19.  
  20. } catch (Exception ex) { System.out.println(ex.getMessage()); }
  21. }
  22.  
  23. public static void main(String[] args) {
  24. new MySQDBAdmin();
  25. }
  26.  
  27. }

 

توجه کنید که root و 1234 یوز و پس mysql-server منه شما باید یوز و پس سرور خودتون رو بدید

اگه mysql-server اتون به راه باشه و درایور رو هم اول برنامه یادتون نرفته باشه اضافه کنید اونوقت همه چی به خوبی و خوشی تموم میشه و بعد از اجرای برنامه بالا می تونید پیغام زیر رو ببینید :

Connected to mysql 

تا اینجا فقط به mysql-server وصل شدید حالا نوبته اینه که یه پایگاه داده ایجاد کنید برای اینکار کد قبل رو به صورت زیر تغییر می دیم و یه پایگاه داده به نام mysql_java_db1 ایجاد می کنیم

 

  1. /**
  2.  * @author safeallah ramezanzadeh
  3.  *
  4.  */
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.Statement;
  8.  
  9.  
  10. public class MySQDBAdmin {
  11. String username="root";
  12. String password="1234";
  13. String dbName="mysql_java_db1";
  14.  
  15. public MySQDBAdmin(){
  16.  
  17. try {
  18.  
  19. Class.forName("com.mysql.jdbc.Driver");
  20. con=DriverManager.getConnection(
  21. "jdbc:mysql://localhost/",username,password);
  22.  
  23. System.out.println("Connected to mysql ");
  24.  
  25. Statement st=con.createStatement();
  26. st.execute("CREATE DATABASE "+dbName);
  27. System.out.println("database created! :D");
  28.  
  29. } catch (Exception ex) {
  30. System.out.println(ex.getMessage());
  31. }
  32.  
  33. }
  34.  
  35. public static void main(String[] args) {
  36. new MySQDBAdmin();
  37. }
  38. }

و اگه همه چی خوب پیش بره خروجیتون باید به صورت زیر باشه

Connected to mysql 
database created! :D 

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

پس کد قبلی رو به صورت زیر تغییر می دیم :

 

  1. /**
  2.  * @author safeallah ramezanzadeh
  3.  *
  4.  */
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.Statement;
  8.  
  9.  
  10.  
  11. public class MySQDBAdmin {
  12. String username="root";
  13. String password="1234";
  14. String dbName="mysql_java_db1";
  15.  
  16. public MySQDBAdmin(){
  17. //connect to mysql
  18. try {
  19.  
  20. Class.forName("com.mysql.jdbc.Driver");
  21. con=DriverManager.getConnection(
  22. "jdbc:mysql://localhost/",username,password);
  23.  
  24. System.out.println("Connected to mysql ");
  25.  
  26. } catch (Exception ex) {
  27. System.out.println(ex.getMessage());
  28. }
  29. //create database
  30. try{
  31.  
  32. Statement st=con.createStatement();
  33. st.execute("CREATE DATABASE "+dbName);
  34. System.out.println("database created! :D");
  35.  
  36. }catch(Exception ex){
  37. System.out.println(ex.getMessage());
  38. }
  39. //connect to your new database
  40. try {
  41. con=DriverManager.getConnection(
  42. "jdbc:mysql://localhost/"+dbName,username,password);
  43.  
  44. System.out.println("Connected to "+dbName);
  45.  
  46. } catch (Exception ex) {
  47. System.out.println(ex.getMessage());
  48. System.exit(0);
  49. }
  50.  
  51. //create table
  52. createSampleTable();
  53.  
  54. }
  55.  
  56. public void createSampleTable(){
  57.  
  58. try {
  59. Statement st = con.createStatement();
  60. st.execute("CREATE TABLE SAMPLE (id int,name char(10))");
  61. System.out.println("SAMPLE created!");
  62. } catch (Exception ex) {
  63. System.out.println(ex.getMessage());
  64. }
  65.  
  66. }
  67.  
  68. public static void main(String[] args) {
  69. new MySQDBAdmin();
  70. }
  71. }

خب توی این کد مهم هست که به سازنده یه نموره توجه کنیم می بنیم که من همه کار ها رو جدا جدا کردم تو بلاک های try{}catch جدا گونه ، این کار لازمه چون اکسپشن ها با هم فرق دارن و بهتره هر عاملی که باعث ایجاد اکسپشن میشه جدا گونه مدیریت بشه

تو بلاک try{}catch اول فقط به mysql-server وصل میشیم این کار همیشه باید انجام بشه

تو بلاک try{}catch دوم یه دیتابیس جدید ایجاد می کنیم مطمئناً این کار در دفعات غیر اولیه اجرای برنامه اکسپشن بر می گردونه چون ما دفعه قبل که برنامه قبلی تره رو اجرا کردیم این دیتابیس یعنی mysql_java_db1 ایجاد شده

تو بلاک try{}catch سوم connection رو تغییر می دیم و به دیتابیسی که خودمون ایجاد کرده بودیم وصل میشیم

یعنی به mysql_java_db1 وصل میشیم حواستون باشه که تو بلاک اولی فقط به mysql_server وصل می شدیم نه به دیتابیس خاصی ولی برای ساخت و مدیریت جداول باید به پایگاه داده (همون دیتابیس) خاص وصل شیم پس اینو همیشه یادتون باشه

برای مدیریت پایگاه های داده فقط به خود mysql-server وصل شید

برای مدیریت جداول به یه پایگاه داده خاص که جداولتون قراره توش باشن

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

الآن اگه برنامه رو اجرا کنید باید خروجیتون مثل زیر باشه

Connected to mysql 
Can't create database 'mysql_java_db1'; database exists
Connected to  mysql_java_db1
SAMPLE created! 

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

Connected to mysql 
Can't create database 'mysql_java_db1'; database exists
Connected to  mysql_java_db1
Table 'SAMPLE' already exists

 

خب حیفه انقدر کار کردیم یه دو سه خط چرت و پرت تو جدولمون ذخیره نکنیم پس کد قبلی رو به صورت زیر به روز رسانی می کنیم

 

 

  1. /**
  2.  * @author safeallah ramezanzadeh
  3.  *
  4.  */
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.Statement;
  8.  
  9.  
  10.  
  11. public class MySQDBAdmin {
  12. String username="root";
  13. String password="1234";
  14. String dbName="mysql_java_db1";
  15.  
  16. public MySQDBAdmin(){
  17. //connect to mysql
  18. try {
  19.  
  20. Class.forName("com.mysql.jdbc.Driver");
  21. con=DriverManager.getConnection(
  22. "jdbc:mysql://localhost/",username,password);
  23.  
  24. System.out.println("Connected to mysql ");
  25.  
  26. } catch (Exception ex) {
  27. System.out.println(ex.getMessage());
  28. }
  29. //create database
  30. try{
  31.  
  32. Statement st=con.createStatement();
  33. st.execute("CREATE DATABASE "+dbName);
  34. System.out.println("database created! :D");
  35.  
  36. }catch(Exception ex){
  37. System.out.println(ex.getMessage());
  38. }
  39. //connect to your new database
  40. try {
  41. con=DriverManager.getConnection(
  42. "jdbc:mysql://localhost/"+dbName,username,password);
  43.  
  44. System.out.println("Connected to "+dbName);
  45.  
  46. } catch (Exception ex) {
  47. System.out.println(ex.getMessage());
  48. System.exit(0);
  49. }
  50.  
  51. //create table
  52. createSampleTable();
  53. insertToSampleTable();
  54. }
  55.  
  56. public void insertToSampleTable(){
  57. try {
  58. Statement st = con.createStatement();
  59. st.execute("INSERT INTO SAMPLE VALUES (12,'SAFE')");
  60. st.execute("INSERT INTO SAMPLE VALUES (143,'AHAD')");
  61. st.execute("INSERT INTO SAMPLE VALUES (5,'ALI REZA')");
  62. st.execute("INSERT INTO SAMPLE VALUES (20,'4PAYE')");
  63.  
  64. System.out.println("INSERETED TO SMAPLE!");
  65. } catch (Exception ex) {
  66. System.out.println(ex.getMessage());
  67. }
  68. }
  69.  
  70. public void createSampleTable(){
  71.  
  72. try {
  73. Statement st = con.createStatement();
  74. st.execute("CREATE TABLE SAMPLE (id int,name char(10))");
  75. System.out.println("SAMPLE created!");
  76. } catch (Exception ex) {
  77. System.out.println(ex.getMessage());
  78. }
  79.  
  80. }
  81.  
  82. public static void main(String[] args) {
  83. new MySQDBAdmin();
  84. }
  85. }

یه متد جدید نوشتم به نام insertToSampleTable که کدش خیلی ساده است و نیاز به توضیح نداره

اینم خروجیش

Connected to mysql
Can't create database 'mysql_java_db1'; database exists
Connected to  mysql_java_db1
Table 'SAMPLE' already exists
INSERETED TO SMAPLE!

نرید نرید نرید هنوز تموم نشده :دی :دی

نمی خواهید این چیزایی رو که تو جدول نوشتید یه بار هم از جدول بخونید؟؟؟؟؟ امتحانش ضرر نداره ها

برای خوندن از جدول یه متد به نام readFromSampleTableمی نویسم و با استفاده از ResultSet نتیجه یه کوئری رو نگه می دارم و بعد چاپش می کنم خیلی است یه نگاه بندازید متوجه میشید

 

 

  1. /**
  2.  * @author safeallah ramezanzadeh
  3.  *
  4.  */
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.ResultSet;
  8. import java.sql.Statement;
  9.  
  10.  
  11.  
  12. public class MySQDBAdmin {
  13. String username="root";
  14. String password="1234";
  15. String dbName="mysql_java_db1";
  16.  
  17. public MySQDBAdmin(){
  18. //connect to mysql
  19. try {
  20.  
  21. Class.forName("com.mysql.jdbc.Driver");
  22. con=DriverManager.getConnection(
  23. "jdbc:mysql://localhost/",username,password);
  24.  
  25. System.out.println("Connected to mysql ");
  26.  
  27. } catch (Exception ex) {
  28. System.out.println(ex.getMessage());
  29. }
  30. //create database
  31. try{
  32.  
  33. Statement st=con.createStatement();
  34. st.execute("CREATE DATABASE "+dbName);
  35. System.out.println("database created! :D");
  36.  
  37. }catch(Exception ex){
  38. System.out.println(ex.getMessage());
  39. }
  40. //connect to your new database
  41. try {
  42. con=DriverManager.getConnection(
  43. "jdbc:mysql://localhost/"+dbName,username,password);
  44.  
  45. System.out.println("Connected to "+dbName);
  46.  
  47. } catch (Exception ex) {
  48. System.out.println(ex.getMessage());
  49. System.exit(0);
  50. }
  51.  
  52. //create table
  53. createSampleTable();
  54. insertToSampleTable();
  55. readFromSampleTable();
  56. }
  57.  
  58. public void readFromSampleTable(){
  59. try {
  60. Statement st = con.createStatement();
  61.  
  62. ResultSet rs=st.executeQuery("SELECT * FROM SAMPLE");
  63.  
  64. while(rs.next()){
  65.  
  66. //get id:
  67. int x=Integer.parseInt(rs.getString(1));
  68. //or x =Integer.parseInt(rs.getString("id"));
  69.  
  70. //get name:
  71. String s=rs.getString(2);
  72. //or s=rs.getStirng("name");
  73. System.out.println(x+" : "+s);
  74. }
  75.  
  76. System.out.println("data readed!");
  77. } catch (Exception ex) {
  78. System.out.println(ex.getMessage());
  79. }
  80. }
  81. public void insertToSampleTable(){
  82. try {
  83. Statement st = con.createStatement();
  84. st.execute("INSERT INTO SAMPLE VALUES (12,'SAFE')");
  85. st.execute("INSERT INTO SAMPLE VALUES (143,'AHAD')");
  86. st.execute("INSERT INTO SAMPLE VALUES (5,'ALI REZA')");
  87. st.execute("INSERT INTO SAMPLE VALUES (20,'4PAYE')");
  88.  
  89. System.out.println("INSERETED TO SMAPLE!");
  90. } catch (Exception ex) {
  91. System.out.println(ex.getMessage());
  92. }
  93. }
  94.  
  95. public void createSampleTable(){
  96.  
  97. try {
  98. Statement st = con.createStatement();
  99. st.execute("CREATE TABLE SAMPLE (id int,name char(10))");
  100. System.out.println("SAMPLE created!");
  101. } catch (Exception ex) {
  102. System.out.println(ex.getMessage());
  103. }
  104.  
  105. }
  106.  
  107. public static void main(String[] args) {
  108. new MySQDBAdmin();
  109. }
  110. }

 

توجه کنید که این دفعه توی متد readFromSampleTable از executeQuery استفاده کردم

همچنین به نحوه استفاده ResultSet هم توجه کنید برای گرفتن مقادیر ستون های مختلف یا اندیس ستون رو میدیم به متد getString یا اسم ستون رو که این مورد رو به صورت کامنت تو کد برنامه نوشتم

و اگه برنامه رو اجرا کنید خروجیتون میشه این

Connected to mysql 
Can't create database 'mysql_java_db1'; database exists 
Connected to mysql_java_db1 
Table 'SAMPLE' already exists 
INSERETED TO SMAPLE! 
12 : SAFE 
143 : AHAD 
5 : ALI REZA 
20 : 4PAYE 
12 : SAFE 
143 : AHAD 
5 : ALI REZA 
20 : 4PAYE 
data readed!

 

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

Connected to mysql 
Can't create database 'mysql_java_db1'; database exists
Connected to  mysql_java_db1
Table 'SAMPLE' already exists
INSERETED TO SMAPLE!
12 : SAFE
143 : AHAD
5 : ALI REZA
20 : 4PAYE
12 : SAFE
143 : AHAD
5 : ALI REZA
20 : 4PAYE
12 : SAFE
143 : AHAD
5 : ALI REZA
20 : 4PAYE
data readed!

این دیگه بر می گرده به نحوه تعریف جدولمون که باید طوری طراحیش می کردیم که داده های تکرای اجازه درج شدن نداشته باشن

این مورد رو هم نمی گم دیگه اگه خودتون می دونید مشکل چیه که خیر و برکت اگه نمی دونید تو  نظرات سوال کنید جوابتون رو میدم

آخیش تو کف گذاشتن چه حالی میده

 

نظرات

نظرات

سلام.وقت بخیر..میخواستم یک قسمتی مانند نظرات که در سایتتون هست و کد بزنم..ممنون میشم که راهنماییم کنین

خیلی مفید بود ان شاالله خدا

خیلی مفید بود

ان شاالله خدا به زندگیتون خیر و برکت بده.

 

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

سلام . من از اندروید استودیو و جنی موشن استفاده میکنم. و این مراحل بالا رو توی قسمت مربوط به جاوا انجام دادم ولی اینسرت توی جدول انجام نمیشه. کسی دلیلش رو میدونه؟ اونجوری که خوندم ip برای استفاده در جنی موشن باید 10.0.3.2 باشه

مشکل حروف فارسی

سلام خسته نباشی

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

ممنون

 

ایول داری

عالی بود ممنون واقعا اجرت با خدا

اشکال در ذخیره حروف فارسی در دیتابیس

سلامممنون از وقتی که میذاریدمن تازه شروع به کار با netbeans کردم یه مشکلی برام پیش اومدهوقتی توی jtext فارسی تایپ میکنم و توی mysql ذخیره میکنم تمام حروف به علامت سوال تبدیل میشهتوی netbeans فارسی رو درست تایپ میکنه یعنی توی jtext فارسی مینویسم بعد که میزنم ذخیره بشه توی mysql تبدیل به علامت سوال میشه تو دیتابیستوی mysql هم utf8_persian_ci رو انتخاب کردم ولی مشکل پابرجاست کسی میتونه کمک کنه و راه حلی بده؟

واقعا خوب توضیح دادین یک دنیا

واقعا خوب توضیح دادین

یک دنیا سپاس

راهنمایی

سلام ممنون از مطالب خیلی خوبتون. خیلی بهم کمک کرد.

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

مشکل

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

(دیتا بیس utf8 هست )

بسیار بسیار عالی. ممنون.

بسیار بسیار عالی.

ممنون.

با نت بینز مینویسیم. میشه

با نت بینز مینویسیم.

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

ممنون.

میل

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

safecomp85[at]gmail.com

 

سوال

سلام.

اول متشکرم به خاطر مطالب خیلی خوبتون.

ما درحال طراحی یه سایت هستیم برای اتصال با پایگاه داده چرا اینو مینویسه؟

Access denied for user 'yasaman'@'localhost' (using password: YES)

مجوز

اگه بدونم تو چه محیطی دارید کار می کنید بهتر می تونم کمک کنم ولی هنگام طراحی سایت اصول کلی به این شکل هست : اول یک پایگاه داده ایجاد کنید ، دوم یک کاربر جدید با یوزر نیم و پسورد مطمئن ایجاد کنید ، کاربر ایجاد شده را به پایگاه داده ای که ایجاد کردید نسبت دهید (پرمیژن های لازم رو برای دسترسی به پایگاه داده به اون کاربر بدید).  با اطلاعات ساخته شده به پایگاه داده وصل شید.

دقت کنید که استفاده از کاربر رووت با پسورد خالی توی دنیای وب بی معنیه.

این پیام هم یعنی کاربر yasaman اجازه دسترسیی به پایگاه داده مورد نظر رو نداره.

خدایی دمت گرم !

داداش دستت درد نکنه ایشالا خدا خیر و برکت بده به خودت و زندگیت :-D

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

کارمو راه انداختی خدا کارتو راه بندازه :-D

میدونم خیلی جو گیر شدم ولی خدایی دمت گرم.

:-D

خوشحالی

ممنون دوست عزیز نظر لطفته ، کامنت های این شکلی واقعاً باعث دلگرمی آدم میشن. مرسی

سوال

سلام

از مطلب خوبتون ممنون

ببخشید ما الآن یه هاست رایگان از سایت xzn.ir گرفتیم و یه دیتابیس هم روی اون ساختیم . اما با آموزش شما که کار می کنیم روی localhost جواب میده و به دیتابیس وصل می شیم اما روی هاست xzn نمیتونیم !!!

یه پیغام خطا بهمون میده که به شکل زیره :

null,  message from server: "Host '151.232.61.213' is not allowed to connect to this MySQL server"

اگه ممکنه کمک کنید خیلی کارمون واجبه

با تشکر

سلام ، اگه کدتون روی سیستم

سلام ، اگه کدتون روی سیستم خودتون هست و فقط پایگاه داده اتون رو تو اینترنت گذاشتید شاید مشکل از MySQL  باشه. البته مشکل که نمیشه گفت. به صورت پیش فرض MySQL اجازه اتصال به صورت remote  رو نمیده و کدی که به دیتابیس وصل میشه باید توی همون کامپیوتری باشه که خوده دیتابیس قرار داره. اگه دسترسی به فایل my.cnf دارید باید بتونید یه قسمت مثل :

bind-address = 127.0.0.1

رو توش ببینید. این خط رو با گذاشتن یک علامت # در ابتدای اون به کامنت تبدیل کنید و MySQL رو رستارت کنید. شاید مشکلتون حل بشه.

اگه حل نشد از طریق ای میل می تونید با من در تماس باشید.

ممنون که سریع جواب

ممنون که سریع جواب دادید

هاستی که داریم استفاده می کنیم xzn.ir هست و رایگانه

مشکل اولمون حل شد و الآن به دیتابیس متصل شدیم ( باتغییر priliveges برای مقدار grant ) اما الآن error به صورت زیر شده :

Packet for query is too large (5526600 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

هر چی سرچ می کنیم همه میگن باید داخل فایل my.cnf مقدار max_allowed_package رو زیاد کنیم اما همونطور که گفتم چون هاست رو از بیرون گرفتیم ( و احتمالارایگانه) به این فایل دسترسی نداریم !!

حالا سوال اینه که /طوری میتونیم به این فایل دسترسی پیدا کنیم؟ اگه هاست بخریم درست میشه؟

شرمنده ایمیلتون رو پیدا نکردیم مجبور شدیم همینجا سوال رو مطرح کنیم:)

سلام xzn رو استفاده نکردم و

سلام xzn رو استفاده نکردم و نمی دونم چی جوریه ، ولی هاستینگ های معمولی این امکان رو به شما می دن که بتونید مقدار max_allowed_packet رو تغییر بدید. حتی اگه تو این کار مشکل داشته باشید می تونید به مدیریت هاستینگتون تیکت بزنید و از اونا بخواهید که این کار رو براتون انجام بدن.

سلام بهترین مطلبی بود که

سلام

بهترین مطلبی بود که تونستم به زبان فارسی تو این زمینه پیدا کنم 

ممنون...

تشکر و سوال؟

آقا دمت گرم ، گل کاشتی

خداییش خیلی عالی بود واقعا بدیدم خورد و تونستی من رو در یادگیری خیلی کمک کنی

فقط یک سوال؟

این برنامه میاد کل مقادیر ذخیره شده در جدول رو از اول تا آخر چاپ میکنه اما ااگه ما بخاییم فقط آخرین مقدار رو به ما بده (چاپ کنه) با ید چیکار کنیم ؟

بازم ممنون

سلام آخرین مقادیر دقیقاً یعنی

سلام

آخرین مقادیر دقیقاً یعنی چی؟ آخرین مقادیری که از لحاظ زمانی وارد شدن؟ یا آخرین عناصر داخل جدول یا چیزی دیگه؟

مثلا منبه صورت زیر داده ها رو

مثلا منبه صورت زیر داده ها رو ذخیره میکنم

12 ali

23 hasan

42 behzad

اینکدها وقتی اجرا بشن کل مقادیر ذخیره شده رو نمایش میده یعنی به صورت زیر

12 ali

23 hasan

42 behzad

ولی من میخوام که فقط مقدار behzad 42 رو نمایش بده ؟

ممنون

خب مقادیر تو دیتابیس به صورت

خب مقادیر تو دیتابیس به صورت پشت سر هم ذخیره نمیشن ، بلکه یه سری ساختمان داده های جدولی - درختی ایجاد میشن و مقادیر میرن توشون ، این باعث میشه تو خود دیتابیس ترتیب داده ها با اون چیزی که ما وارد کردیم فرق داشته باشه ، حالا برای حفظ ترتیب دو تا راه داریم ، اگه ترتیب زمانی واسمون مهمه باید یه ستون اضافه کنیم به جدول که تاریخ ایجاد هر داده رو تو اون ستون درج کنیم ، بعد موقعی که می خواهیم از جدول بخونی فقط اونی که بزرکترین تاریخ ورودی رو داره بخونیم ، یا نه ساده تر خوندمون اگه تو یه برنامه و تو یه حلقه انجام میشه (یعنی داده ها از جاهای مختلف وارد برنامه نمیشن) همون شمارنده حلقه رو به عنوان ستون جدید درج کنیم تو جدول

یعنی در هر دو صورت به ساختار جدول باید یه ستون اضافه شه ، حالا اگه خواستید بیشتر توضیح بدم ،می دم

نمیشه شرط حتقه while رو شرطش

نمیشه شرط حتقه while رو شرطش رو درست کرد که مثلا بزاریم

int i=1

  • while(i<=5()){

  • int x=Integer.parseInt(rs.getString(1));
  • i--;
  • }

اینطوری 5مین مقدار ذخیره شده در ستون 1 رو بعد از اتمام حلقه داخل x نگه داشته میشهاین طوری امکانش هست؟؟؟

خب اینجوری اون آخرین مقداری

خب اینجوری اون آخرین مقداری که از دیتابیس خونده شده رو تو یه متغیر نگه داری می کنیم ، قبلن گفتم الزاماً داده ها با اون ترتیبی که وارد دیتابیس می شن از دیتابیس خونده نمی شن ، یعنی ممکنه تو یه سری مواقع مثلاً وقتی تعداد داده ها کمه این اتفاق بیافته ولی این همیشگی نیست ، در حقیقت مقادیر تو دیتابیس به ترتیبی ذخیره میشن که زمان دسترسی به اونا بهینه شه

سلام به دوست عزیز . آقا دمت

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

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

با تشکر

سلام خوشحالم که مورد پسنده

سلام

خوشحالم که مورد پسنده شما خواننده عزیز قرار گرفته ،بله خروجی مبتنی بر متن بود چون اون زمان که داشتم این متن رو می نوشتم بیشتر تاکیدم رو دیتا بیس بود ، اینکه خواننده هایی مثل شما پیشنهاداتشون رو بیان کنن خیلی خوبه حتماً به زودی یه برنامه با رابطه گرافیکی هم می نویسم و در اون مورد هم بحث خواهیم کرد

DB

سلام 

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

ممنون 

نماز و روزه هاتون هم مورد درگاه حق تعالی قبول

موفق و موید 

DB

سلام 

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

ممنون 

نماز و روزه هاتون هم مورد درگاه حق تعالی قبول

موفق و موید 

سلام بله کار با دیتا بیس رو

سلام

بله کار با دیتا بیس رو هم به زودی به صورت یه پست جدا می زارم فقط یه کم باید صبر کنید :دی