五月二十六日jdbc算法以及数据库
1.在PreparedStatement创建SQL对象后,调用preparedStatement()方法
时,通过占位符?来按照索引进行SQL语句动态执行
通过setString()方法和setInt()方法来为占位符?赋值
String selectSql = "SELECT * FROM student WHERE sNo = ?";
ps.setString(1,"5");//将字符串1传递给第19行sNo参数占位符
2.利用CallableStatement接口实现类创建对象时使用execute方法执行SQL语句
3.CallableStatement cs = conn.prepareCall("{call 存储过程名}");
4.String callSql1 = "{call addStudent{(?,?,?,?,?)}";//?为IN类型的占位符
IN类型占位符在执行SQL语句前需要赋初值
5.String callSql2 ="{call getCount(?)}"//?为OUT类型占位符
6.OUT类型占位符在执行SQL语句前需要赋初值
若不知OUT和INOUT类型参数要进行类型注册:
cs.registerOutParamenter(int index,int sqlType);
getXXX()方法返回类型值
7.带若干参数存储过程
CallableStatement cs = conn.prepareCall("{call 程序过程名("?,?,?,.....")}")
8.带若干参数和返回值参数存储过程
CallableStatement cs = conn.prepareCall("{? = call 程序过程名("?,?,?...")}");
9.获取元数据:获取数据库名称,版本、以及驱动和数据库URL等等
DatabaseMetaData接口利用Connection的getMetaDate()方法创建对象
DatabaseMetaDate dmd = Connection.getMetaDate();
总结:通过PrepareStatement对象动态地通过占位符?来赋值
CalableStatement接口通过Connection对象创建存储过程对象
在本对象中IN和OUT类型参数在执行啥情况语句前必须赋初值
OUT和INOUT类型参数必须注册登录
CallableStatement对象用execute()方法执行SQL语句
DatabaseMeteDate通过Connection对象创建对象来返回元数据信息
LeetCode
算法:求数组最大子序列并输出
利用贪心算法:
class solution{
public List<Integer> ku(int []args){
int sum = 0;
for (int a:args
) {
sum +=a;
}
//第二步:对数组进行排序调用调优算法Arrays.sort(int []a)
Arrays.sort(args);
//第三步:定义最大子序列list
ArrayList<Integer> list = new ArrayList<>();
int n = args.length;//定义数组args长度
int count = 0;//用于求最大子序列和
// 第四步:遍历数组,将最大子序列添加在列表list中与顺序数组子序列比较
for (int i = n-1; i >=0 ; i--) {
list.add(args[i]);//用来返回最大子序列
count += args[i];
if(count>(sum-count)){
break;
}
}
return list;
}
}}
sql语句:将表中男性别改为女性别女性别改为男性别
update salary set sex =if(sex = 'f','m','f');
update salary set set = (case sex when 'f' then 'm' else 'f');
总结:在今天的LeetCode学习中,想过取出最大值来比较,但没有想过子序列用list列表来记录最大子序列
通过Arrays.sort()方法来升序排序,再通过list列表添加子序列,子序列和与数组和差与子序列和比较最后得到list列表
SQL语句中见识到了if语句和casewhen then else语句多表查询