ورود

View Full Version : سوال: مشکل عبارت like در جاوا با Access2010



mostafabahrami
سه شنبه 26 بهمن 1395, 18:37 عصر
با سلام خدمت دوستان
من یه برنامه دسکتاپ جاوا میخام بنویسم که با پایگاه داده ms access2010 کار میکنه. چون خیلی سبکه و data entry زیادی نداره از اکسس استفاده میکنم فقط برای راحتی کار باهاش.
برای اتصال به اون از datasource سیستم کمک گرفتم یعنی ODBC.
کانکشنم درسته و کار میکنه.
اما تو سرچ از جدولم (select) مشکل دارم. وقتی میخام از دستور like استفاده کنم توی خود access میرم تو query دستور like کار میکنه و خروجی هم داره
اما وقتی همین کدو توی اپلیکیشن میفرستم کار نمیکنه یعنی خروجی نداره. خطا هم نمیده.
این هم دستور select :
SELECT karmand.K_ID, karmand.K_name, karmand.family FROM karmand
WHERE (((karmand.K_name Like 'm*') AND ((karmand.family) Like 'b*')));

توی خود اکسس لیست کارمندایی که اسمشون با m و فامیلی با b شرو شده میاره.
*********
برای اطلاع : من از connection دیتابیس یه Statement می سازم و با اون executeQuery میکنم و میریزم توی ResultSet. دستورات جاوام مشکلی نداره چون وقتی دستور select رو بدون شرط Where اجرا میکنم قشنگ خروجی میده.
دوستان لطف کنن راهنمایی کنن مشکل از کجاست؟

vahid-p
سه شنبه 26 بهمن 1395, 22:27 عصر
کاش کد جاوایی که این دستورات رو وارد کردی رو هم میذاشتی

mostafabahrami
چهارشنبه 27 بهمن 1395, 09:01 صبح
1111111111111111111

mostafabahrami
چهارشنبه 27 بهمن 1395, 09:02 صبح
کاش کد جاوایی که این دستورات رو وارد کردی رو هم میذاشتی
اینم
کد جاواش:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class DataBase {

Connection con = null;
private boolean createCon() {
this.con = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ex) {
return false;
}
try {
this.con = DriverManager.getConnection("jdbc:odbc:myDb", "ali", "123456");
} catch (SQLException ex) {
return false;
}
return true;
}
private boolean closeCon() {
try {
this.con.close();
} catch (SQLException ex) {
return false;
}
return true;
}
public KarmandInfo search2(String name, String family) throws SQLException {
KarmandInfo karmandInfo = null;
Connection c;
if (createCon()) {
c = this.con;
} else {
return null;
}
Statement st = null;
st = c.createStatement();
String query = "SELECT karmand.K_ID, karmand.K_name, karmand.family FROM karmand WHERE (((karmand.K_name Like 'm*') AND ((karmand.family) Like 'b*'));";
// query = "SELECT * FROM karmand ; ";
System.out.println("query = " + query);
ResultSet rs = null;
rs = st.executeQuery(query);
while (rs.next()) {
karmandInfo = new KarmandInfo();
//karmandInfo.K_ID=rs.getString(1);
System.out.println(rs.getString(1));
}
closeCon();
return karmandInfo;
}


کلاس KarmandInfo هم فقط شامل فیلدای این جدوله اینم کدش :
public class KarmandInfo {
public String K_ID;
public String name;
public String family;
public String unit_id;
public String unit_name;
}
اینجایی که کامنت کردم :
// query = "SELECT * FROM karmand";
وقتی از کامنت در میارم و اجراش میکنم کد کارمندی رو چاپ میکنه
قبل از اجرا هم خود متغیر query رو میدم خروجی کنسول چاپ کنه بعدش همونو توی access کپی میکنم جواب میده ولی تو جاوا که ران میشه نه!
مرسی

vahid-p
پنج شنبه 28 بهمن 1395, 00:31 صبح
کدت با چیزی که تو پست اول نوشتی فرق میکنه.
بعد where یک پرانتز باز شده که بسته نشده.
ضمنا داشتن یا نداشتن ; رو هم بعد Like 'b*')) رو هم تست کن (بعید میدونم مشکلی داشته باشه)