Android对接数据库基础入门(SQL Server)

一.Android环境安装

安装教程:     https://www.runoob.com/java/java-environment-setup.html   

                       https://www.runoob.com/android/android-studio-install.html

安装包下载:     
                       https://developer.android.google.cn/studio

二.文件夹及常用快捷键

Android对接数据库基础入门(SQL Server)

文件夹用意存粹的个人理解,仅供参考。

三.常用快捷键

Ctrl+Q:光标选中方法显示该方法的详细参数信息

Alt+Enter  可以自动修复一些代码不全或引用不全的错误。

Ctrl+N:查找类

Ctrl+R:替换文本

Ctrl+H:显示类结构图

Ctrl+P:提示方法的参数信息

Ctrl+D:复制行

Ctrl+/:注释代码 格式://代码块

Ctrl+F7:可以查询当前元素在当前文件中的引用,然后按F3可以选择

Ctrl+Shift+Backspace:可以跳转到上次编辑的地方

Ctrl+Alt+L:格式化代码

Ctrl+Alt+T:可以把代码包在一块内,例如try/catch

Alt+Insert:快速生成构造方法或是GET,SET方法

Alt+Enter:感应代码提示 例如方法转型 Alt+回车:导入包,自动修正

Debug模式快捷键:

             f8:跳到下一步

             alt+f8:debug时选中查看值

             shift+f8:跳到下一个断点,也相当于跳出函数

             f7:相当于c#的f5就是进入到代码

             alt+shift+f7:这个是强制进入代码

             ctrl+shift+f9 :debug运行java类

             ctrl+shift+f10:正常运行java类

             command+f2:停止运行

Alt+Shift+K :注释类说明<这里需自己设置:File –> Settings–>点击Keymap–>在右边右上角搜索Other(fix doc comment)–>看到Fix doc comment 鼠标右键选择第一个,在输入框First Stroke输入ALT+SHIFT+K

三.数据库基础发开

1.导入jtds的包

        下载地址: https://sourceforge.net/projects/jtds/files/jtds/

2.在xml里面配置不拦截

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

3.链接代码

private PreparedStatement pstm;

// jtds驱动路径 (Config.getIp()--ID地址,Config.getDBName()--数据库名称,Config.getUser()--账号名,Config.getPwd()--密码)

private String drive = "net.sourceforge.jtds.jdbc.Driver";

private static String conStr="jdbc:jtds:sqlserver://"+ Config.getIp()+"/"+ Config.getDBName();

private  Connection con = null;

/** 创建数据库对象 */

private static Connection getSQLConnection()  throws Exception {    

         Connection con = null;  

         Class.forName("net.sourceforge.jtds.jdbc.Driver");    

         //加上 useunicode=true;characterEncoding=UTF-8 防止中文乱码    

         con = DriverManager.getConnection(conStr, Config.getUser(), Config.getPwd());    

        return con;

}

 

//查询

public Carton SelectXH(String CartonNo){

    Carton carton = null;

    try{
        Connection conn = getSQLConnection();
        String sql ="select mt_BillID, mt_BQty from  MES_Carton ";

        Statement stmt = conn.createStatement();

        ResultSet rs = stmt.executeQuery(sql);

        if(rs == null && !rs.next()){

            return carton;

        }

        while (rs.next())
        {

            String mt_BillID = rs.getString("mt_BillID");

            String mt_BQty = rs.getString("mt_BQty ");

            carton = new Carton( mt_BillID,mt_BQty );

        }

    }catch(Exception e){

        e.printStackTrace();

        Log.d("SQL", "出错"+e.toString());

    }

    return carton;

}

//修改或新增

public int SaveMoGZ(int S1B, int S1E){

    int count = 0;

    try {

        // 加载驱动

        Class.forName(drive);

    } catch (ClassNotFoundException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }

    try {

        con= getSQLConnection();

        pstm = con.prepareStatement("update MES_MO set mo_S1B =  "+S1B+" ,mo_S1E = "+S1E);

       count = pstm.executeUpdate();

    } catch (Exception e) {

        // TODO: handle exception

        e.printStackTrace();

        count = -1;

    } finally {

        try {

            pstm.close();

            con.close();

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

    return count;

}

//调用存储过程

public String  SavePBbyCarton1(int CartonID, int CartonID1,int Qty,int Unit,String UserNo)  {

    String Result="";

    CallableStatement cstmt = null;

    try {

        con= getSQLConnection();

        cstmt = con.prepareCall("{call P_APP_SavaPBbyCarton(?, ?, ?, ?, ?, ?)}");

        cstmt.setInt("CartonID",CartonID);

        cstmt.setInt("CartonID1",CartonID1);

        cstmt.setInt("Qty",Qty);

        cstmt.setInt("Unit",Unit);

        cstmt.setString("UserNo",UserNo);

        cstmt.registerOutParameter("Infos", Types.VARCHAR);

        cstmt.execute();

        Result = cstmt.getString("Infos");

    } catch (Exception e) {

        e.printStackTrace();

    } finally {

        try {

            if(cstmt!=null ) {

                cstmt.close();

            }

            if(con!=null ) {

                con.close();

            }

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }

    return Result;

}

 

 

//Activity活动中线程请求

//有返回值请求

Handler handler=new Handler(){

    @Override

    public void handleMessage(Message msg) {

         string info = msg.obj.ToString();

    }

};

Runnable run = new Runnable() {

    @Override

    public void run() {

        Message message=new Message();

        DAL dal = new DAL();

        message.obj=dal.getInBillQty(txtMO.getText().toString());

        handler.sendMessage(message);

    }

}; new Thread(run).start();

 

//无返回值请求

Runnable runable = new Runnable() {
            @Override
            public void run() {
                DAL.DB dal = new DAL.DB();
                dal.SaveUserLine(LineID,UserNo);
            }
        };

new Thread(runable).start();