|
|
|
Android สอบถามการ Select Image จาก SQL Server ไปแสดงเป็น ListView โดยการแปลงจาก Binary เป็น byte ครับ |
|
|
|
|
|
|
|
คือผมต้องการให้แสดงรายละเอียดกับรูปภาพด้วยกันครับ โค้ด insert image
Code (Android-Java)
public void insert_room(Connection conn, String imagePath, String strfnum, String strfool) {
int len;
PreparedStatement pstmt;
try
{
File file = new File(imagePath);
FileInputStream fis = new FileInputStream(file);
len = (int)file.length();
String query;
query = ("insert into tb_room VALUES(?,?,?,?,?)");
pstmt = conn.prepareStatement(query);
pstmt.setString(1,strfnum);
System.out.println(strfnum);
pstmt.setString(2,strfool);
System.out.println(strfool);
pstmt.setString(3,file.getName());
pstmt.setInt(4, len);
// Method used to insert a stream of bytes
pstmt.setBinaryStream(5, fis, len);
pstmt.executeUpdate();
pstmt.close();
conn.close();
Log.e("Insert", "Connected to the database!!! Insert data complet....");
}
catch (Exception e)
{
Log.e("ERROR", e.getMessage());
}
}
โค้ด select image
Code (Android-Java)
Public void select_room(Connection conn) {
byte[] fileBytes;
String query;
try
{
query = "select *from tb_room";
Statement state = conn.createStatement();
ResultSet rs = state.executeQuery(query);
if (rs.next())
{
fileBytes = rs.getBytes(1);
OutputStream targetFile=
new FileOutputStream("picture_im");
targetFile.write(fileBytes);
targetFile.close();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
รวบกวนช่วยชี้แนะด้วยน่ะครับ หรือพอมีตัวอย่างบ้างไหมครับ
Tag : Mobile, Ms SQL Server 2012, Android
|
|
|
|
|
|
Date :
2014-05-06 11:02:00 |
By :
loveverm |
View :
1596 |
Reply :
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้เขียน Connection ระหว่าง Android กับ SQL Server ยังไงบ้างครับ
|
|
|
|
|
Date :
2014-05-06 13:19:59 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้คือ class connect
Code (Android-Java)
class connect
{
public connect() {}
public Connection dbConnect( )
{
// StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
// StrictMode.setThreadPolicy(policy);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Connection conn = null;
String url = "jdbc:jtds:sqlserver://192.168.56.1:1433;DatabaseName=roomrental";
String driver = "net.sourceforge.jtds.jdbc.Driver";
String userName = "sa";
String password = "113377";
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, password);
Log.e("ERROR", "Connected to the database!!! Getting table list...");
} catch (Exception e) {
e.printStackTrace();
//Log.e("ERROR", "Error");
Log.getStackTraceString(e);
Log.e("ERROR",Log.getStackTraceString(e));
} finally {
}
return conn;
}
ตัวนี้คือการconnect ที่เชื่อต่อกัน
Code (Android-Java)
connect db = new connect();
Connection conn=db.dbConnect();
db.insert_room(conn,imagePath,strfnum,strfool);
|
|
|
|
|
Date :
2014-05-06 15:01:24 |
By :
loveverm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนที่ Insert ทำการ Insert ได้หรือเปล่าครับ แล้วไม่ลองเก็บเป็นแบบ Path ครับ มันจะง่ายตอนที่นำไปใช้
|
|
|
|
|
Date :
2014-05-06 15:07:10 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้คือ โค้ด insert ครับ
Code (Android-Java)
public void insert_room(Connection conn, String imagePath, String strfnum, String strfool) {
int len;
PreparedStatement pstmt;
try
{
File file = new File(imagePath);
FileInputStream fis = new FileInputStream(file);
len = (int)file.length();
String query;
query = ("insert into tb_room VALUES(?,?,?,?,?)");
pstmt = conn.prepareStatement(query);
pstmt.setString(1,strfnum);
System.out.println(strfnum);
pstmt.setString(2,strfool);
System.out.println(strfool);
pstmt.setString(3,file.getName());
pstmt.setInt(4, len);
// Method used to insert a stream of bytes
pstmt.setBinaryStream(5, fis, len);
pstmt.executeUpdate();
pstmt.close();
conn.close();
Log.e("Insert", "Connected to the database!!! Insert data complet....");
}
catch (Exception e)
{
Log.e("ERROR", e.getMessage());
}
}
คือผมต้องการให้รูปมันอยู่ในฐานข้อมูลเลยครับ
|
|
|
|
|
Date :
2014-05-06 15:37:07 |
By :
loveverm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (Android-Java)
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Main {
static String url = "jdbc:oracle:thin:@localhost:1521:javaDemo";
static String username = "username";
static String password = "welcome";
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url, username, password);
String sql = "SELECT name, description, image FROM pictures ";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
String name = resultSet.getString(1);
String description = resultSet.getString(2);
InputStream is = resultSet.getBinaryStream(3);
}
conn.close();
}
}
ตัวอย่างการอ่านครับ คงจะไม่ยาก เอาค่า is ไปใช้เลยครับ
|
|
|
|
|
Date :
2014-05-06 15:50:30 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือเราสามารถเอาค่า is ไปแสดงได้เลยใช่ไหมครับ
|
|
|
|
|
Date :
2014-05-06 15:58:26 |
By :
loveverm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเราจะเอาไปแสดงเป็น listview เราจะต้อง return is คืนค่าไปด้วยช่ายป่าวครับ
|
|
|
|
|
Date :
2014-05-06 16:21:47 |
By :
loveverm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สร้างเป็น Array ก็ได้ครับ แล้วค่อยไป Map กับ Adapter ของ ListView
|
|
|
|
|
Date :
2014-05-06 16:25:03 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตรง InputStream ผมเอาไปยัดใส่Array ไม่ได้ครับมันผิด
โค้ดครับ
public void select_room(Connection conn, ArrayList<HashMap<String, String>> myArrList, HashMap<String, String> map) {
Log.e("Error", "1");
//byte[] fileBytes;
//String query;
try
{
Log.e("Error", "2");
String sql = "SELECT num_room, floor, picture_im FROM tb_room ";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet resultSet = stmt.executeQuery();
if (resultSet.next())
{
Log.e("Error", "3");
String strnum_room = resultSet.getString(1);
String strfloor = resultSet.getString(2);
InputStream is = resultSet.getBinaryStream(3);
map = new HashMap<String, String>();
map.put("NR",resultSet.getString(strnum_room).toString());
map.put("NR",resultSet.getString(strfloor).toString());
map.put("NR",resultSet.getString(is).toString());
myArrList.add(map);
}
conn.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return resultSet;
}
|
|
|
|
|
Date :
2014-05-06 16:55:41 |
By :
loveverm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|