一开始看“动力节点”的jdbc教程看到将字符串数据以mysql添加数据写法写入mysql数据库,我看了真的热血,像我这个各种到处学的精神就来试试jsp怎么写(注:jsp就是html + java,底层是java的io流)
显示按照教程的来写:
1、先是注册驱动:
java.sql.Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
2、然后获取连接& 6、释放资源:
Connection conn = null;
try {
String url = "jdbc:mysql://localhost:3306/mysql_learn_two";
Sring user = "root";
String password = "qw18358174722er";
conn = DriverManager.getConnection(url, user, password);
out.println(conn);
}catch (SQLException e){
e.printStackTrace();
}finally {
try {
if(conn != null){
conn.close();
}
}catch (SQLException s){
s.printStackTrace();
}
}
这里抛出了SQLExecption异常要处理和要关闭流
3、获取数据库操作对象:
stmt = conn.createStatement();
4、执行sql:
//java写法
String sql = "insert into t_user_one_1(userName,userPwd) values('lisi','12345')";
int count = stmt.executeUpdate(sql);
System.out.println(count == 1 ? "保存成功":"保存失败");
//jsp写法
<%
String sql = "insert into t_user_one_1(userName,userPwd) values('lisi','12345')";
int count = stmt.executeUpdate(sql);
out.println(count == 1 ? "保存成功":"保存失败");
%>
这些都是固定值添加到数据库中的数据,接下来就是动态添加了
先是html里写这样一串代码:
<form action="../jsp/regCheck1.jsp" method="post">
用户名<input type="text" name="userName" placeholder="请问您怎么称呼"><br />
密码<input type="text" name="userPwd" placeholder="请保护好您的密码"><br />
<input type="submit" value="注册"><br />
</form>
标签用于为用户输入创建 HTML 表单。 将表单里的就是我的jsp处理内容了。 jsp的内容跟上面差不多,只是我改了第四部的sql字符串。之前,在有一篇中提到的内容中让我发现字符串的格式化可能可以实现,但是遇到了一些坎:
Unknown column 'wo' in 'field list'
找到的却是:
$sql="INSERT INTO user(user,pass) values($user,$pass)";
最终没解决问题
之后又是
You have an error in your SQL syntax;
找到的是:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id=4' at line 1
也就是说在sql语句出现错误,在sql语句的第一行的‘id=4’附近。
这时候可以看到这个语句的user_name,age,sex,id并不是一些mysql内部关键字。
在sql语句中更新语句就是:
update tbl_user_info
set user_name=?,age=?,sex=?
where id=?
所以就是在“sex=?”+“ where id=?”加上一个空格就好。
也没有起任何作用。
后来我又查了java的格式化格式
String str=null;
str=String.format("Hi,%s", "小超");
System.out.println(str);
str=String.format("Hi,%s %s %s", "小超","是个","大帅哥");
System.out.println(str);
System.out.printf("字母c的大写是:%c %n", 'C');
System.out.printf("布尔结果是:%b %n", "小超".equal("帅哥"));
System.out.printf("100的一半是:%d %n", 100/2);
System.out.printf("100的16进制数是:%x %n", 100);
System.out.printf("100的8进制数是:%o %n", 100);
System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85);
System.out.printf("上面价格的16进制数是:%a %n", 50*0.85);
System.out.printf("上面价格的指数表示:%e %n", 50*0.85);
System.out.printf("上面价格的指数和浮点数结果的长度较短的是:%g %n", 50*0.85);
System.out.printf("上面的折扣是%d%% %n", 85);
System.out.printf("字母A的散列码是:%h %n", 'A');
之后在努力下找到了这边:
解决方法:
1、如果是作插入操作“insert into.....”的话,很可能是插入表的字段没匹配对,比如有一些要求非空的字段,要检查是否都赋了值。
2、查看插入时,赋值是否加了单引号:values(“'”+变量+“'”,'“'”+变量+“'”)。
3、总之,就是要仔细检查sql语句,最好先去数据库中,运行一下看看。
的第二句话,让我恍然大悟。
结论:
String sql = String.format("insert into t_user_one_1(userName,userPwd) values('%s','%s')",userName1,userPwd1);
这样就可以随机的添加到mysql数据库的表中。