Android Compose 操作mysql

1.添加权限

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.添加mysql库

implementation("mysql:mysql-connector-java:5.1.47")

3.添加DBHelper类


import java.sql.Connection
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.SQLException

class DBHelper {
    companion object{
        val driver: String = "com.mysql.jdbc.Driver";
        val url: String = "jdbc:mysql://XXX(IP):3306/(数据库名库)";
        val user: String = "用户名";
        val password:String = "密码";

        fun getConn(): Connection?{
            var conn: Connection? =null;
            Class.forName(driver);
            try {
                conn = DriverManager.getConnection(url, user, password) as Connection?;
            }
            catch (e: SQLException){
                e.printStackTrace()
            }

            return conn
        }
        fun ExecuteQuerySQL(strSQL: String):ArrayList<ArrayList<String>>?  {
            var conn:Connection? = null
            var resultSetList :ArrayList<ArrayList<String>> = ArrayList<ArrayList<String>>();
            conn = DBHelper.getConn()
            if (conn == null) {
                //System.out.println("输出为null");
                return null;
            }

            try {
                var st = conn.createStatement()
                var rsForResult: ResultSet = st.executeQuery(strSQL)
                while(rsForResult.next())
                {
                    var rsRecord:ArrayList<String>  = ArrayList<String>();
                    var icount:Int = rsForResult.getMetaData().getColumnCount();

                    for(i in 1 .. icount)
                        rsRecord.add(rsForResult.getString(i));

                    resultSetList.add(rsRecord);
                }
                st.close();
                conn.close();
                return resultSetList;
            } catch (e:SQLException ) {
                e.printStackTrace();
            }

            return null;
        }
        fun ExecuteNoQuerySQL(strSQL: String): Boolean  {
            var conn:Connection? = null
            conn = DBHelper.getConn()
            if (conn == null) {
                //System.out.println("输出为null");
                return false;
            }


            try {
                var st = conn.createStatement()
                var rsForResult: ResultSet = st.executeQuery(strSQL)

                st.close();
                conn.close();
                return true;
            } catch (e:SQLException ) {
                e.printStackTrace();
            }

            return false;
        }

    }

}

4.添加ViewModel类

class MySqlViewModel: ViewModel() {
    var userName = mutableStateOf("")
    var iCount = 5
    fun getUserName(id: Int): String? {

        var sql: String = "select userName from userT where id = "+id
        var rsList = DBHelper.ExecuteQuerySQL(sql)

        if (rsList != null) {
            if(rsList.size>0)
                return rsList.get(0).get(0)
            else
                return ""
        }else
            return null
    }

    fun OnClick2(){
        GlobalScope.launch {
            var strName:String?=null
            strName = getUserName(iCount)
            userName.value = strName?:""
            iCount++
            if(iCount>10)
                iCount=5
        }

    }

}

5.compose界面

@Composable
fun Greeting(viewModel: MySqlViewModel, modifier: Modifier = Modifier) {
    Column {
        Text(
            text = "Hello ${viewModel.userName.value}!",
            modifier = modifier
        )

        Button(onClick = {
            viewModel.OnClick2()
        }) {
            Text(text = "click")
        }
    }

}

 viewModel的获取。

 var mySqlViewModel = ViewModelProvider(this).get(MySqlViewModel::class.java)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lph009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值