Upload an Image to MS-SQL Database in Android Studio

Following are the step to upload a image to MS-SQL database in Android Studio.

(1) Step – 1 : Add following in your activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/edittext"
    android:hint="Text"
    />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:text="Generate"
        />


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageview"
        android:layout_gravity="center"
        android:layout_marginTop="@dimen/_35sdp"
        />


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Upload Image"
        android:id="@+id/qrbutton"
        />


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/status"
        android:text="Status"
        android:layout_gravity="center"
        android:textAlignment="center"
        />

</LinearLayout>

(2) Step – 2 : Now add following in your MainActivity.java.

public class MainActivity extends AppCompatActivity {

public class MainActivity extends AppCompatActivity {

    EditText editText;
    Button button,qrbutton;
    ImageView imageView;

    TextView textView;

    Connection con;
    Statement stmt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText)findViewById(R.id.edittext);
        button = (Button)findViewById(R.id.button);
        imageView = (ImageView)findViewById(R.id.imageview);
        qrbutton = (Button)findViewById(R.id.qrbutton);

        textView = (TextView)findViewById(R.id.status);

        qrbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new MainActivity.sendImage().execute("");
            }
        });

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MultiFormatWriter multiFormatWriter = new MultiFormatWriter();

                try{
                    BitMatrix bitMatrix = multiFormatWriter.encode(editText.getText().toString(),BarcodeFormat.QR_CODE,500,500);
                    BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
                    Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
                    imageView.setImageBitmap(bitmap);
                    textView.setText("Image Created");
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        });
    }

    public class sendImage extends AsyncTask<String,String ,String>{

        @Override
        protected String doInBackground(String... strings) {
            String s = "false";
            try{
                textView.setText("Sending Image to Database");
                BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
                Bitmap bitmap = bitmapDrawable.getBitmap();
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG,100,byteArrayOutputStream);
                byte[] bytes = byteArrayOutputStream.toByteArray();
                String image = Base64.encodeToString(bytes , Base64.DEFAULT);

                con = connectionClass(ConnectionClass.un.toString(),ConnectionClass.pass.toString(),ConnectionClass.db.toString(),ConnectionClass.ip.toString());
                String query = "insert into Image (image) values ('"+image+"')";
                stmt = con.createStatement();
                stmt.executeUpdate(query);
                s  = "true";
                textView.setText("Image Send to Database Success");
            }catch (Exception e){
                e.printStackTrace();
            }

            return s;
        }
    }



    @SuppressLint("NewApi")
    public Connection connectionClass(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+"/" + database + ";user=" + user + ";password=" + password + ";";
            connection = DriverManager.getConnection(connectionURL);
        }catch (Exception e){
            Log.e("SQL Connection Error : ", e.getMessage());
        }

        return connection;
    }

}

(3) Step – 3 : If you want to generate a QR-Code you can check following blog.

https://ketulpatel.code.blog/2020/05/21/generating-qr-code-in-android-studio/

(4) Step – 4 : Following is the output of the application.

(5) Step – 5 : If you want to watch full video you can visit the link below.