PDA

View Full Version : وصل شدن برنامه به دیتابیس sql



sara_traveler
یک شنبه 31 شهریور 1392, 12:04 عصر
من تو برنامم برای اینکه از طریق نت بتونم به دیتابیس sql وصل بشم این کد گذاشتم و در oncreate فراخونی کردم

public void ConnectToDatabase(){
try {

// SET CONNECTIONSTRING
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
"String username = "sina";
String password = "123";
Connection DbConn = DriverManager.getConnection("jdbc:jtds:sqlserver://192.168.1.126:1433/test;user=" + username + ";password=" + password);

Log.w("Connection","open");
Statement stmt = DbConn.createStatement();
ResultSet reset = stmt.executeQuery(" select codetafzil from tafzil ");


EditText num = (EditText) findViewById(R.id.etName);
num.setText(reset.getString(1));

DbConn.close();

} catch (Exception e)
{
Log.w("Error connection","" + e.getMessage());
}
}




اما این پیغام رو میده و چیزی نمایش نمیده
, و ابتدا connection open که در log اومده نمایش میده بعد log بعدی
error connectoin
net.sourceforge.jtds.jdbc.driver
نمایش میده که در قسمت catch هست

hamid_hr
یک شنبه 31 شهریور 1392, 12:29 عصر
يه منبعي اينو نوشته بود
The JTDS library does not use the encrypt=true configuration element. Instead use the ssl=require or ssl=request options

rubiks.kde
یک شنبه 31 شهریور 1392, 13:10 عصر
به این صورت استفاده کنید ببینید مشکلتون حل میشه

public void query2()
{
Log.i("Android"," MySQL Connect Example.");
Connection conn = null;
try {
String driver = "net.sourceforge.jtds.jdbc.Driver";
Class.forName(driver).newInstance();
//test = com.microsoft.sqlserver.jdbc.SQLServerDriver.class ;
String connString = "jdbc:jtds:sqlserver://server_ip_address :1433/DBNAME;encrypt=fasle;user=xxxxxxxxx;password=xxxxx xxx;instance=SQLEXPRESS;";
String username = "xxxxxx";
String password = "xxxxxxxxxx";
conn = DriverManager.getConnection(connString,username,pa ssword);
Log.w("Connection","open");
Statement stmt = conn.createStatement();
ResultSet reset = stmt.executeQuery("select * from TableName");

//Print the data to the console
while(reset.next()){
Log.w("Data:",reset.getString(3));
// Log.w("Data",reset.getString(2));
}
conn.close();

} catch (Exception e)
{
Log.w("Error connection","" + e.getMessage());
}
}

sara_traveler
یک شنبه 31 شهریور 1392, 14:37 عصر
باز هم همون خطا داد
و حتی این پیغام رو هم چاپ نکرد
Log.w("Connection","open");

///
شما قبلا استفاده کردین؟

sara_traveler
دوشنبه 01 مهر 1392, 18:37 عصر
براي وصل شدن گوشي از طريق اينترنت به sql كه روي سرور هست ابا به جز كد هاي بالا نيازي هست من اينها درmanifest بنويسم ؟

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
چون كدهاي بالا در ايمولاتور كه روي سيستم خودم كه sql هست جواب نميده
ممنون ميشم راهنمايي كنيد

rubiks.kde
دوشنبه 01 مهر 1392, 20:53 عصر
شما به ایم مجوز نیاز دارید و ازش استفاده کنید.
<uses-permission android:name="android.permission.INTERNET" />

sara_traveler
چهارشنبه 03 مهر 1392, 14:30 عصر
این قسمت رو هم اضافه کردم اما درست نشد
و در قسمت String connString = "jdbc:jtds:sqlserver://server_ip_address
ipvalid دادم
اما همچنان error میده
تا حالا کسی این قسمت انجام داده که جواب گرفته باشه؟
ممنون

rubiks.kde
چهارشنبه 03 مهر 1392, 19:52 عصر
سلام دوست عزیز امروز کلی روی این تحقیق کردم همین کدی که گذاشتم کاملا درسته ولی مشکلی که هست مربوط میشه به java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver است .
خیلی دنبال گشتم مشکلش مربوط به ورژن بود من از ورژن 1.2.7 jtds استفاده کردم و درست شد.

sara_traveler
پنج شنبه 04 مهر 1392, 08:09 صبح
خیلی ممنون ازتون که وقت گذاشتید و شما هم بررسی کردید
واقعا ازتون ممنونم
میشه همون فرمی که کار کردید به من هم بدید
اگر این کار بکنید لطف بزرگی کردید
ممنون

sara_traveler
پنج شنبه 04 مهر 1392, 09:21 صبح
الان من باید ن 1.2.7 jtds دانلود کنم و جای خاصی بریزم؟

hamid_hr
پنج شنبه 04 مهر 1392, 09:33 صبح
سلام
من ديروز ميخواستم تس كنم به اين رسيدم
http://www.microsoft.com/en-us/download/details.aspx?id=21599
دان كردم بعد اكستراكت كردم
يه پوشه به برنامه اضافه كردم و فايل sqljdbc4.jar رو به پوشه اضافه كردم
بعد روي پروژه راست كليك كردم peroperties
تب libraries دكمه add jares بعد رو پوشه اي كه اضافه كردم رفتم و همون فايلو انتخاب كردم
يه پوشه خودش برام ساخت به نام Refrens Libraries
كه توش همون فايله بود
بعد اينطوري ازش استفاده كردم
TextView tx=(TextView)findViewById(R.id.editText2);
tx.setText("0: ");
// SET CONNECTIONSTRING
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
tx.setText(tx.getText() + "1: ");
Connection DbConn = DriverManager.getConnection
("jdbc:sqlserver://10.0.0.1\\sqlexpress:1433;database=test;user=arya; password=arya357");
//("jdbc:jtds:sqlserver://192.168.1.51:1433/test;user=" + username + ";password=" + password);
tx.setText(tx.getText() + "2: ");
Log.w("Connection","open");
Statement stmt = DbConn.createStatement();
tx.setText(tx.getText() + "3: ");
ResultSet reset = stmt.executeQuery(" select * from [Address] ");
tx.setText(tx.getText() + "4: ");
DbConn.close();
tx.setText(tx.getText() + "5: ");
}catch(Exception ex)
{

tx.setText(tx.getText() + ex.toString() + "6: ");
}

من با ايممليتور كار ميكردم چون گوشي در دسترس نداشتم
برا همين نتونستم ارتباط برقرار كنم
شما هموني 1.2.7 jtds كه rubiks.kde دانلود كنيد
به روشي كه گفتم به رفرنسها اضافه كنيد
برنامه خودتونو اجرا كنيد ببينيد چي ميشه
انشالله حل بشه
حل نشد اين فايلي كه من گذاشتم دانلود كنيد با اين تست كنيد

sara_traveler
پنج شنبه 04 مهر 1392, 10:55 صبح
اگر با ایمولاتور کار کنیم نمیتونه وصل بشه؟

hamid_hr
پنج شنبه 04 مهر 1392, 11:08 صبح
من نميدونم اي پي سرور رو چي بزارم كه وصل بشه به sqlserver كامپيوتر من
اگه ميدونين بگين تا بزارم تست كنم

sara_traveler
پنج شنبه 04 مهر 1392, 11:26 صبح
فکر نکنم بشه به اسکیول خودمون وصل شد
چون قرار با نت وصل بشه پس باید اسکیول ipvalid داشته باشه

sara_traveler
پنج شنبه 04 مهر 1392, 11:32 صبح
من الان اون فایل دانلود کردم و همون مراحلی که گفتید رفتم اما همچنان همون خطا میده
net.sourceforge.jtds.jdbc.driver

rubiks.kde
پنج شنبه 04 مهر 1392, 12:27 عصر
سلام

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


فکر نکنم بشه به اسکیول خودمون وصل شد
چون قرار با نت وصل بشه پس باید اسکیول ipvalid داشته باشه

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

لینک دانلود (http://s1.picofile.com/file/7950624301/SQL.rar.html)

اگه میخواهید برنامه رو روی شبیه ساز تست کنید و از sql server که روی همون سیستم نصب هست استفاده کنید ip رو در کدتون به 10.0.0.2 تغییر بدید.

mohsen22
سه شنبه 22 بهمن 1392, 17:18 عصر
اقا سعید مرسی....
کانکشن استرینک من اینه

1<connectionStrings>
<add name="cms-CS" connectionString="Data Source=204.93.178.157;Initial Catalog=khodayar-safayirad_Eshop-wideweb;User ID=khodayar-safayirad_mohsen;Password=khodayar-123" providerName="System.Data.SqlClient"/>
</connectionStrings>


با اون کدی که شما نوشتی مچ نمیشه ؟؟! مرسی

mohsen22
چهارشنبه 23 بهمن 1392, 06:25 صبح
بفرموده اقا سعید مدیر محترم فقط ای پی رو حایگزین کردم با کد موجود در سورس درست شد.....مرسی
یه جایی خوندم این روش امن نیست ! چرا؟

rubiks.kde
چهارشنبه 23 بهمن 1392, 10:08 صبح
بفرموده اقا سعید مدیر محترم فقط ای پی رو حایگزین کردم با کد موجود در سورس درست شد.....مرسی
یه جایی خوندم این روش امن نیست ! چرا؟

چون با دیکامپایل کد رو میشه دید و مشخصات سرور رو میشه در آورد

alialirezaee1
دوشنبه 28 بهمن 1392, 21:04 عصر
چون با دیکامپایل کد رو میشه دید و مشخصات سرور رو میشه در آورد
براي رفع اين مشكل چكار ميشه كرد؟

پسورد اتصال به ديتابيس رو بايد تو سورس بزرايم كه فكر نمي كنم راه خوبي باشه. راه حل چيست؟

mohsen22
دوشنبه 28 بهمن 1392, 23:03 عصر
فکر کنم کد ها رو باید سمت سرور بنویسیم

alialirezaee1
دوشنبه 28 بهمن 1392, 23:14 عصر
فکر کنم کد ها رو باید سمت سرور بنویسیم

براي وصل شدن اندرويد به sql server سمت سرور و كلاينت نداريم كه. يه function كه با يك connection string به sql وصل ميشه. تبيعتا يوزر و پسورد سرور بايد در connection string قرار بگيرد.

راه حل بهتر!؟

rubiks.kde
سه شنبه 29 بهمن 1392, 01:01 صبح
براي رفع اين مشكل چكار ميشه كرد؟

پسورد اتصال به ديتابيس رو بايد تو سورس بزرايم كه فكر نمي كنم راه خوبي باشه. راه حل چيست؟

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

mohsen22
سه شنبه 29 بهمن 1392, 22:37 عصر
براي وصل شدن اندرويد به sql server سمت سرور و كلاينت نداريم كه. يه function كه با يك connection string به sql وصل ميشه. تبيعتا يوزر و پسورد سرور بايد در connection string قرار بگيرد.

راه حل بهتر!؟

نمونه کد هایی که با پی اچ پی نوشته شده (سمت سرور)کمکتون می کنه

Lulzsec
یک شنبه 01 تیر 1393, 19:54 عصر
می خوام کدم رو امتحان کنم ولی هرچی هاست iis هست(مجانی)، بدون sql server هست. و با MS Access Database هست. می خواستم بدونم اگر من بتونم تو وصل شدن به بانک و درج و... با MS Access Databse نتیجه بگیرم روی sql server هم نتیجه میده ؟

nasr
دوشنبه 13 مهر 1394, 14:25 عصر
سلام
مشکل این کد چیه که وصل نمیشه
دو روزه دارم ور میرم ولی نتونستم وصل بشم

public void query2() { Log.i("Android", " MySQL Connect Example.");
Connection conn = null;
try {
String driver = "net.sourceforge.jtds.jdbc.Driver";
Class.forName(driver).newInstance();


String connString = "jdbc:jtds:sqlserver://188.136.172.11/Report;encrypt=fasle;user=nasr;password=123456;";
String username = "nasr";
String password = "123456";
conn = DriverManager.getConnection(connString, username, password);
Log.w("Connection", "open");
Statement stmt = conn.createStatement();
ResultSet reset = stmt.executeQuery("select * from TBInfo");




while (reset.next()) {
Log.w("Data:", reset.getString(3));


}
conn.close();
} catch (Exception e) {
Log.w("Error connection", "" + e.getMessage());
}
}

nasr
دوشنبه 13 مهر 1394, 15:26 عصر
با این کد مشکلم حل شد
package app.mysqlapp;package app.mysqlapp;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Login extends ActionBarActivity {
Button loginbtn;
TextView errorlbl;
EditText edname, edpassword;
Connection connect;
PreparedStatement preparedStatement;
Statement st;
String ipaddress, db, username, password;
@SuppressLint("NewApi")
private Connection ConnectionHelper(String user, String password,
String database, String server) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
Connection connection = null;
String ConnectionURL = null;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
ConnectionURL = "jdbc:jtds:sqlserver://" + server + ";"
+ "databaseName=" + database + ";user=" + user
+ ";password=" + password + ";";
connection = DriverManager.getConnection(ConnectionURL);
} catch (SQLException se) {
Log.e("ERRO", se.getMessage());
} catch (ClassNotFoundException e) {
Log.e("ERRO", e.getMessage());
} catch (Exception e) {
Log.e("ERRO", e.getMessage());
}
return connection;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
loginbtn = (Button) findViewById(R.id.btnlogin);
errorlbl = (TextView) findViewById(R.id.lblerror);
edname = (EditText) findViewById(R.id.txtname);
edpassword = (EditText) findViewById(R.id.txtpassword);
ipaddress = "192.168.0.14";
db = "mydatabase";
username = "hitesh";
password = "789";
connect = ConnectionHelper(username, password, db, ipaddress);
loginbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
connect = ConnectionHelper(username, password, db, ipaddress);
st = connect.createStatement();
ResultSet rs = st.executeQuery("select * from login where userid='" + edname.getText().toString() + "' and password='" + edpassword.getText().toString() + "'");
if (rs != null &amp;&amp; rs.next()) {
Intent i = new Intent(Login.this, MainActivity.class);
startActivity(i);
} else {
errorlbl.setText("Sorry, wrong credentials!!!");
}
} catch (SQLException e) {
errorlbl.setText(e.getMessage().toString());
}
}
});
}
}