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
二.文件夹及常用快捷键
文件夹用意存粹的个人理解,仅供参考。
三.常用快捷键
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();