数据库中添加数据出错,提示Insert into语句错误
 String sql="insert into T_EMPLOYER(NAME,SEX,NUMBER) VALUES(?,?,?)";                 
             PreparedStatement ps=conn.prepareStatement(sql);    
            //ps.setString(1,id);
             ps.setString(1, name);
             ps.setString(2, sex);
             ps.setString(3,number);             
上面写法是不是有误??提示下面的结果          

PreparedStatement ps=conn.prepareStatement(sql);
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。
?????怎么解啊?

6个回答

你的字段可能和数据库中的专有名词冲突了。你可以改一下字段名字,再试试,或则在给sql中的字段名加上(键盘!前面的那个)引号。

suwu150
suwu150 解决了,是我的NUMBER问题冲突了,我把NUMBER改为NUMBERANDPHONE之后就完成了正常的插入功能,谢谢各位的提示
接近 4 年之前 回复

VALUES(?,?,?,?)里面的“?”要填你实际的值。

suwu150
suwu150 不行啊,如果改为0,则提示java.lang.ArrayIndexOutOfBoundsException: -1 at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1022)
接近 4 年之前 回复
qq_20039385
qq_20039385 ?号是占位符,序号从0开始,改成:ps.setString(0,id); ps.setString(1, name); ps.setString(2, sex); ps.setInt(3,Integer.parseInt(number));
接近 4 年之前 回复
suwu150
suwu150 我是用的是PreparedStatement,是不是values传递的参数只能是3个??
接近 4 年之前 回复
suwu150
suwu150 上面是我的完整语句
接近 4 年之前 回复
suwu150
suwu150 String sql="insert into T_EMPLOYER(ID,NAME,SEX,NUMBER) VALUES(?,?,?,?)"; PreparedStatement ps=conn.prepareStatement(sql); ps.setString(1,id); ps.setString(2, name); ps.setString(3, sex); ps.setInt(4,Integer.parseInt(number));
接近 4 年之前 回复

ID是不是表示列,标识列不能添加

suwu150
suwu150 不是,如果我在values的参数中传3个值ID,NAME,SEX,则可以正常插入,加上NUMBER后就提示说insert into语句错误
接近 4 年之前 回复

在值的两边加上引号试试

suwu150
suwu150 ps.setString(1, "name"); ps.setString(2, "sex"); ps.setString(3,"number");这样还是提示insert into错误,加单引号eclipse直接提示红波浪线线错误
接近 4 年之前 回复

Microsoft][ODBC Microsoft Access Driver 提示信息是数据库连接问题,代码没有问题,你看看你的数据库Driver 包和配置文件路径对不对

suwu150
suwu150 会不会是NUMBER字段的属性有问题
接近 4 年之前 回复
suwu150
suwu150 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn= DriverManager.getConnection("jdbc:odbc:DDEmployer"); Statement stat=conn.createStatement();这些都合适着呢吧
接近 4 年之前 回复

你看看你的字符类型设计的是什么,NUMBER,是否和你传递的正确

suwu150
suwu150 已解决,字段冲突了,谢谢啊
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MFC中使用insert语句插入时的问题
函数通过前面传的对象过来,将它插入数据库中,执行下面一句代码时出错: strSql.Format(_T("INSERT INTO Bill_Info (Bill_ID,Buyer_Name,Buyer_Book,Buyer_State,Price) values('%s','%s','%s','%d','%f')"), b.getbid(),b.getbname(),b.getbbook(),b.getbstate(),b.getprice()); 报错为![图片说明](https://img-ask.csdn.net/upload/201601/09/1452321493_590134.png) 自动窗口中的数值![图片说明](https://img-ask.csdn.net/upload/201601/09/1452321510_568424.png) 求问是什么问题啊
在visual stadio中我连接了打开了数据库然后书写插入语句中有一个变量出错了,我只怎么能?
stringsql = string.Format("INSERT INTO Teacher(Tno,Tname,Tsex,Tbirthday,AdmittionTime,PID,Ttitle,DeptNo,Phone,Tpassword)VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}')", tNumber, tName, tSex, tBirth, tEnter, tID, tTitle, tDeptNo, tPhone, tPasswor![图片说明](https://img-ask.csdn.net/upload/201906/17/1560738403_787531.png) d);![图片说明](https://img-ask.csdn.net/upload/201906/17/1560738277_154492.png)
用java向sql server2008添加数据报错
用queryRunner.update(connection, sql, args);向数据库插入一条数据出错,报java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'WHERE' 附近有语法错误。求教大神是什么原因,用junit test case测试能连通数据库,数据库是sql server 2008 ,sql语句是insert into customers(id,name,addres,phone)values('?','?','?','?') 使用方法 update(sql,customer.getId(),customer.getName(),customer.getAddress(),customer.getPhone());传入参数 public void update(String sql,Object ...args) { Connection connection = null; try { connection = JDBCUtils.getConnection(); queryRunner.update(connection, sql, args); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.releaseConnection(connection); } }
UPDATE 语句与 FOREIGN KEY 约束"FK_DeskInfo_RoomInfo"冲突。
比如我有一个Room表 主键是RoomId。 一个Desk表,主键是DeskId,外键是RoonId Room表有 : RoomId(标示列), RoomName , RoomType 其中 一条数据 RoomId 1 , RoomName 测试 ,RoomType=1 在Desk表 : DeskId(标示列) RoomId,DeskName, 我插入一条数据 insert into Desk values (1,大包间) 我查找错误时,原样在数据库中没问题,就是程序中一直报错 到底是哪出错了 求大神帮忙! ![图片说明](https://img-ask.csdn.net/upload/201603/11/1457666282_829837.jpg)
python连接mysql数据库出错,已经试了网上的几种方法,,求助
http://blog.csdn.net/lishan9133/article/details/7024989 之前是按照上面的教程安装了mysqldb模块,可是在实际操作过程中,找不到对应行的代码,所以并没有按照上面的改。 # 打开数据库连接 db = MySQLdb.connect( host='192.188.80.41', port=3306, user='root', passwd='123456', db='db_zhuanjia', charset='utf8') # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """ INSERT INTO EMPLOYEE(Sex) VALUES (ans2(1))""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # Rollback in case there is any error db.rollback() # 关闭数据库连接 db.close() 报错代码: Traceback (most recent call last): File "G:\python\1\craweler2.py", line 44, in <module> charset='utf8') File "G:\python\1\lib\site-packages\MySQLdb\__init__.py", line 80, in Connect return Connection(*args, **kwargs) File "G:\python\1\lib\site-packages\MySQLdb\connections.py", line 187, in __init__ super(Connection, self).__init__(*args, **kwargs2) OperationalError: (2003, "Can't connect to MySQL server on '192.188.80.41' (10060)")
如何在SQL语句中传入正确的数据类型?——python3.6, pymysql
<p>很奇怪的一个问题</p> <p>我想用python3.6中的pymysql包将数据传入到MySQL中, 数据库中的表的类型分别是(简略):</p> <blockquote> nick_name VARCHAR(...),<br /> content VARCHAR(...),<br /> time DATETIME,<br /> num_like INT,<br /> num_forward INT,<br /> num_comment INT,<br /> </blockquote> <p>于是有了如下语句:</p> <blockquote>sql_insert = "INSERT INTO `post` (`nick_name`, content`, `time`, `num_like`, `num_forward`, `num_comment`) VALUES (%s, %s, %s, %d, %d, %d)"<br /> cursor.execute(sql_insert, ('Jack', 'Wow!', '2017-11-17 11:20', 20, 30, 30)) </blockquote> <br /> <p>当然,在编译过程中遇到了如下错误:</p> <blockquote>TypeError: %d format: a number is required, not str</blockquote> <p>于是我谷歌了一番,在<em>stackoverflow</em>上,有个大神给出了<a href="https://stackoverflow.com/questions/5785154/python-mysqldb-issues-typeerror-d-format-a-number-is-required-not-str">答案</a>:</p> <blockquote>The format string is not really a normal Python format string. You must always use %s for all fields.</blockquote> <p>意思是在SQL里,不能用<em>%d</em>,要换成<em><strong>%s</strong></em>.</p> <p>后来,我在pymysql文档中也找到了相似的解答。于是,我将代码修改成:</p> <blockquote>sql_insert = "INSERT INTO `post` (`nick_name`, content`, `time`, `num_like`, `num_forward`, `num_comment`) VALUES (%s. %s, %s, <strong>%s, %s, %s</strong>)"</blockquote> <p>但是,又报了如下错误:</p> <blockquote>pymysql.err.ProgrammingError: (1064, "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 '`, `time`, `num_like`, `num_forward`, `num_comment`) \n VALUES ('Jack'. 'W' at line 2")</blockquote> <p>这一次,我找不到答案了。因为好像很少有人到这一步还出错的……</p> <p>求各位大神解答……</p>
在VS中使用sqlite存储一个变量
我是用的是VS2015以及sqlite3,希望存储一个字符型的变量比如:char videoname[100] 建立了数据库,也建立了一个表,通过语句: sql = "insert into \"lalalala\" values(NULL ,'hahahaoa', '20171207' );";可以添加数据但数据库当中 可是我想添加的后两个,本来应该是变量,网上说使用 sql = "insert into \"KeyFrame\" values(NULL ,'"+str1 +" ', '"+ str2+"' );"; 我试了,还是会出错。。。 麻烦各位帮忙解决,或者告诉一些相关链接也好。。。。
关于C# 数据库 用户注册的问题
想通过按钮实现对用户的注册,数据库中用户名为主键所以一旦重复自己报错 调试过程中出现“已有打开的与此command相关联的DataReader,必须先将其关闭” 小白求教 还希望能帮着看看我写的这段代码还有其他什么问题吗 谢谢谢谢 ``` private void button1_Click(object sender, EventArgs e) { string username, password1, password2; string conString = @"Data Source=LETEMPS;Initial Catalog=海景影城;Integrated Security=true;Pooling=False"; SqlConnection conn = new SqlConnection(conString); try { string cmd = "INSERT INTO 用户名信息表(用户姓名,用户名,密码,联系方式)VALUES('"+textBox1.Text+ "','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"')"; SqlCommand com = new SqlCommand(cmd, conn); //创建数据库连接 username = textBox2.Text; password1 = textBox3.Text; password2 = textBox5.Text; if (password1 == password2) { try { //创建数据库查询命令 SqlCommand scmd = new SqlCommand(); scmd.Connection = conn; //使用SqlCommand对象的ExecuteReader方法查询所有影院的编号,名称,地点和联系方式操作 scmd.CommandText = @"select 用户名 from 用户名信息表"; //定义查询方法 conn.Open(); SqlDataReader reader = scmd.ExecuteReader(CommandBehavior.CloseConnection); if (com.ExecuteNonQuery() != 0)//com.ExecuteNonQuery()执行语句,并返回受影响行数 MessageBox.Show("注册成功!"); else MessageBox.Show("注册不成功!"); conn.Close();//关闭 } catch (Exception error) { //输入异常   MessageBox.Show(error.Message, "输入异常", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } finally { conn.Close();//关闭连接   conn.Dispose();//清除连接   } } else { //两次输入的密码不相同,给出提示   MessageBox.Show("两次输入的密码不同!"); } } catch (Exception ex) { MessageBox.Show(ex.Message, "操作数据库出错", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } finally { conn.Close(); } } ```
已设置id自增长,数据库输入也实现,但在注册页面依旧只能输入一条数据,多输就会出错
<%@page import="com.sun.corba.se.spi.orbutil.fsm.Guard.Result"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import= "edu.jmi.db.*" %> <%@ page import= "edu.jmi.dao.*" %> <%@ page import= "edu.jmi.model.*" %> <%@ page import= "java.sql.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <style type="text/css"> </style> <body> <center> <% //1设置解码 request.setCharacterEncoding("utf-8"); //2获取参数 String str=request.getParameter("name"); String str1=request.getParameter("password"); String str2=request.getParameter("password2"); String str3=request.getParameter("mail"); System.out.println(str+str1+str2+str3); if(str==null){//如果初次加载页面,直接返回,不会执行下面存取数据库的代码 //return; }else{ session.setAttribute("usr", str); response.sendRedirect("regok.jsp"); //3存取数据库 //3.1获取数据库链接 Connection conn=DB.getConnection(); //3.2准备插入sql语句 String sql="insert into user values(?,?,?,?)"; PreparedStatement pst=conn.prepareStatement(sql); pst.setInt(1,1); //id pst.setString(2,str);//name pst.setString(3,str1);//pass pst.setString(4,str3);//email //3.3执行插入 int res=pst.executeUpdate(); System.out.println("插入结果是:"+res); pst.close(); conn.close(); } %> <form action="" > <p>用户名:<input type="text" value="" name="name"></p> <p>密码:<input type="password" value="" name="password"></p> <p>确认密码:<input type="password" value="" name="password2"></p> <p>邮箱:<input type="text" value="" name="mail"></p> <input type="submit" value="注册"> <input type="reset" value="重置"> </form> </center> </body> </html> pst.setInt(1,1); //id pst.setString(2,str);//name pst.setString(3,str1);//pass pst.setString(4,str3);//email 应该是此处错了,怎么改
c#写的一个winform单机pc软件使用access数据库打包后只能读不能写
各位大佬救救孩子啊 我已经在我电脑上把上面几个全部勾选下来了 但是打包发布后 在对方电脑上 还是只有读的权限 只要一插入就会出错 我使用的是access数据库 为了能单机打包过去 不知道这还是我的权限没有设置好 还是不能用这个cmd2.ExecuteNonQuery();方法来执行插入语句? 下面是错误里面提到的第69行代码的上下文 67 cmd2.CommandText = "insert into userlogin(username,userpass) values(" + "\"" + textBox1.Text + "\"" + "," + "\"" + textBox2.Text + "\"" + ")"; 68 MessageBox.Show(cmd2.CommandText); 69 cmd2.ExecuteNonQuery(); ![图片说明](https://img-ask.csdn.net/upload/201905/20/1558333925_160430.png) System.Data.OleDb.OleDbException (0x80004005): 操作必须使用一个可更新的查询。 下面是错误里面提到的第69行代码的上下文 67 cmd2.CommandText = "insert into userlogin(username,userpass) values(" + "\"" + textBox1.Text + "\"" + "," + "\"" + textBox2.Text + "\"" + ")"; 68 MessageBox.Show(cmd2.CommandText); 69 cmd2.ExecuteNonQuery();
C# 数据模型是dbml,从sqlserver转sqlite,事务中InsertOnSubmit出错
一个桌面程序,数据库要从sqlserver转到sqlite,我还在研究中,只是想把目前理解到的信息发出来,希望有类似经验的人能一针见血 数据模型是dbml的,一次insert为例 ``` DBModel.Test data=... DataContext dc = theDB.GetDataContext(); dc.GetTable<DBModel.Test>().InsertOnSubmit(data); dc.SubmitChanges(); ``` 数据库连接已经变了,在某次操作中,不用事务,且只进行一次如上操作时,没有问题。如果操作中,有2次以上如上操作时,原来的程序是用事务的,在第一次如上操作时就报错, ![图片说明](https://img-ask.csdn.net/upload/201709/28/1506588085_268719.png) 我把第一次的操作改成insert into Test。。。的sql语句,执行能过去,到了下一个操作又报同样的错误。 以下2017年9月29日 11:28:35 听了caozhy的建议。我去看了生成的sql。不报错的是类似这样的 ``` exec sp_executesql N'INSERT INTO [dbo].[CustomerInfo]([customerNo], [customerType], [contractNo], [customerName]) VALUES (@p0, @p1, @p2, @p3, @p4)',N'@p0 nvarchar(4000),@p1 int,@p2 nvarchar(4000),@p3 nvarchar(4000),@p4 nvarchar(4000)',@p0=N'1000000150',@p1=0,@p2=N'',@p3=N'321654987',@p4=N'321654987' ``` 而报错的是这样的 ``` exec sp_executesql N'INSERT INTO [dbo].[ReceiptItemDetial]([ReceiptNo], [items], [Unit], [Price], [Quantity], [subTotal], [remark]) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6) SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 int,@p1 nvarchar(4000),@p2 nvarchar(4000),@p3 decimal(18,3),@p4 decimal(18,3),@p5 decimal(18,3),@p6 nvarchar(4000)',@p0=14402,@p1=N'sdfg',@p2=N'元/米',@p3=1.000,@p4=1.000,@p5=1.000,@p6=N'' ``` 看了sql。我想起了这些表的差别了。不报错的那几个表,主键是nvarchar,而报错的那几个,主键是int,自增的。或许这就是他们sql语句不同的原因?也是转到sqlite错误的原因?
Tidb数据库关于load data infile 是不是ignore模式?
Tidb 能够很好的兼容MySQL,因此它也支持了MySQL的load data infile 。 但是通过今天的测试,发现他不支持使用load data local infile 'a.csv' ignore into table 'a.b'; 这样使用ignore的操作? 在这边文章中[TiDB 源码阅读系列文章(十六)INSERT 语句详解](https://segmentfault.com/a/1190000016075645 "")提到load data infile 与insert ignore into。但我在其他地方并没有找到其他的依据(也就是说不用使用ignore,就是ignore模式了)。但到底是不是这样呢? 有待考究。 而在Tidb给的官方文档中,有这么一段解释: ``` TiDB 在执行 load data 时,默认每 2 万行记录作为一个事务进行持久化存储。如果一次 load data 操作插入的数据超过 2 万行,那么会分为多个事务进行提交。如果某个事务出错,这个事务会提交失败,但它前面的事务仍然会提交成功,在这种情况下一次 load data 操作会有部分数据插入成功,部分数据插入失败。而 MySQL 中会将一次 load data 操作视为一个事务,如果其中发生失败情况,将会导致整个 load data 操作失败。 ``` 这样的话,如果我插入的时候确实出错了(或者我认为的中止了任务),这就会导致,一部分数据没有插入。那我肯定要再插入一次,这次插入肯定要使用ignore的形式进行load data infile 带ignore的格式。而在tidb的load data infile 中没有这个格式,所以可以暂时判断它是默认为ignore格式。 否则当我的数据插入一半挂掉后,我需要修改我导入数据的文件,将已经插入的数据去除,这极大的增加了工作量,Tibd如果要活下来,肯定不会有这种der的bug存在的。 所以我几乎说服我自己了。 但到底tidb 的 load data infile 是不是ignore 的模式呢,希望您给出更事实性的回答。
jsp 链接MySQL数据库使用excuteUpdate()方法出错
<%@ page language="java" import="java.sql.*,java.io.*" pageEncoding="UTF-8"%> <% String driverNmae="com.mysql.jdbc.Driver"; String username="root"; String password="123456"; String dbName="book"; String tableNmae="bookinfo"; String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+username+"&password="+password; Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection conn=DriverManager.getConnection(url); Statement stmt=conn.createStatement();//执行 SQL语句并返回它所生成结果的对象 //定义变量接收数据 String bookname=request.getParameter("name"); String publisher=request.getParameter("publisher"); String price=request.getParameter("price"); bookname=new String(bookname.getBytes("iso-8859-1"));//对输入的数据进行编码 publisher=new String(publisher.getBytes("iso-8859-1")); price=new String(price.getBytes("iso-8859-1")); if(bookname.equals("")|publisher.equals("")|price.equals("")){ response.sendRedirect("index.jsp"); }else{ String sql="insert into bookinfo(bookname,publisher,price) values("+bookname+","+publisher+","+price+")"; stmt.executeUpdate(sql);//**就是这句老是报错** out.print("数据添加成功"); } stmt.close(); conn.close(); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>连接数据库测试</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> </body> </html> 错误如下: HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: An exception occurred processing JSP page /MyJsp.jsp at line 23 20: response.sendRedirect("index.jsp"); 21: }else{ 22: String sql="insert into bookinfo(bookname,publisher,price) values("+bookname+","+publisher+","+price+")"; 23: stmt.executeUpdate(sql);**** 24: out.print("鏁版嵁娣诲姞鎴愬姛"); 25: } 26: stmt.close(); Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) root cause javax.servlet.ServletException: com.mysql.jdbc.exceptions.jdbc4.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 '?,清å�Žå¤§å­¦å‡ºç‰ˆç¤?,12.00)' at line 1 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779) org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:109) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) root cause com.mysql.jdbc.exceptions.jdbc4.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 '?,清å�Žå¤§å­¦å‡ºç‰ˆç¤?,12.00)' at line 1 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) com.mysql.jdbc.Util.handleNewInstance(Util.java:406) com.mysql.jdbc.Util.getInstance(Util.java:381) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536) com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1564) com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1485) org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:78) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs. -------------------------------------------------------------------------------- Apache Tomcat/6.0.13
JSP里连接数据库实现数据插入出错 求帮助。
[color=red]首先有两个页面insert.jsp和insert-success.jsp, 在insert.jsp里面连接数据库dbs,把表stu中的数据输出,然后添加一条记录,添加之后,跳转到insert_success.jsp 输出添加之后的stu里的所有记录。[/color] [u][color=green]表结构如下:[/color][/u] [img]http://dl.iteye.com/upload/attachment/298878/abc47b80-1a07-3f4a-8f57-678f0f13059d.jpg[/img] [u][color=green]insert.jsp源码[/color][/u][code="java"]<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ page import="java.sql.*"%> <html> <head> <title>Insert Record Test...</title> </head> <body> <p> <font color=green>data inserting test........</font> </p> <hr color="brown"> <form action="insert_success.jsp" method="post"> <table > <tr><td>input StuID</td> <td><input type=text name="no"></td></tr> <tr><td>input StuName</td> <td><input type=text name="name"></td></tr> <tr><td>input ChineseScore</td> <td><input type=text name="chiscore"></td></tr> <tr><td>input MathScore</td> <td><input type=text name="mathscore"></td></tr> <tr><td>input EngScore</td> <td><input type=text name="engscore"></td></tr> </table> <br> <input type="submit" value="click to add record"/> </form> <hr color="brown"> <br> <p> <font color=green>添加之前的数据记录:</font></p> <% try{ Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e){} String ConStr = "jdbc:oracle:thin:@" ; String ServerName = "localhost"; String url =ConStr+ServerName+":1521:dbs"; String SqlQuery = "SELECT * FROM stu"; Connection con = DriverManager.getConnection(url,"soo","qq"); Statement sql=con.createStatement(); ResultSet rs = sql.executeQuery(SqlQuery); out.print("<table >"); out.print("<TH>学号"); out.print("<TH>姓名"); out.print("<TH>语文"); out.print("<TH>数学"); out.print("<TH>英语"); while (rs.next()) { out.print("<tr>"); out.print("<td>"+rs.getInt("no")+"</td>"); out.print("<td>"+rs.getString("name")+"</td>"); out.print("<td>"+rs.getInt("chinese")+"</td>"); out.print("<td>"+rs.getInt("math")+"</td>"); out.print("<td>"+rs.getInt("english")+"</td>"); out.print("</tr>"); } out.print("</table>"); rs.close(); sql.close(); con.close(); %> </body> </html>[/code] [u][color=green]insert_success.jsp源码[/color][/u][code="java"]<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%@ page import="java.sql.*" %> <html> <head> <title>New Records!</title> </head> <body> <br> <% try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e){} String name = request.getParameter("name"); String no=request.getParameter("no"); String chiscore = request.getParameter("chiscore"); String mathscore = request.getParameter("mathscore"); String engscore = request.getParameter("engscore"); out.print("<table border>"); out.print("<TH>StuID"); out.print("<TH>StuName"); out.print("<TH>ChineseScore"); out.print("<TH>MathScore"); out.print("<TH>EnglishScore"); String ConStr = "jdbc:oracle:thin:@"; String ServerName = "localhost"; String url = ConStr+ServerName+":1521:dbs"; Connection con = DriverManager.getConnection(url,"soo","qq"); Statement sql = con.createStatement(); String SQLQuery = "INSERT INTO stu VALUES("+no+",'"+name+"',"+chiscore+","+mathscore+","+engscore+")"; out.print(SQLQuery); ResultSet rs = sql.executeQuery(SQLQuery); while(rs.next()){ out.print("<tr>"); out.print("<td>"+rs.getInt("no")+"</td>"); out.print("<td>"+rs.getString("name")+"</td>"); out.print("<td>"+rs.getInt("chinese")+"</td>"); out.print("<td>"+rs.getInt("math")+"</td>"); out.print("<td>"+rs.getInt("english")+"</td>"); out.print("</tr>"); } out.print("</table>"); rs.close(); con.close(); sql.close(); %> </body> </html>[/code] insert.jsp [img]http://dl.iteye.com/upload/attachment/298880/f80fcc0b-2eb4-3049-b682-4b02a73cf0f3.jpg[/img] [u][color=green]点击 click to add record之后出现如下错误:[/color][/u] [code="java"]HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: An exception occurred processing JSP page /insert_success.jsp at line 38 35: ResultSet rs = sql.executeQuery(SQLQuery); 36: while(rs.next()){ 37: out.print("<tr>"); 38: out.print("<td>"+rs.getInt("no")+"</td>"); 39: out.print("<td>"+rs.getString("name")+"</td>"); 40: out.print("<td>"+rs.getInt("chinese")+"</td>"); 41: out.print("<td>"+rs.getInt("math")+"</td>"); Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause javax.servlet.ServletException: java.sql.SQLException: ORA-00900: 无效 SQL 语句 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) org.apache.jsp.insert_005fsuccess_jsp._jspService(insert_005fsuccess_jsp.java:113) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause java.sql.SQLException: ORA-00900: 无效 SQL 语句 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283) oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278) oracle.jdbc.driver.T4C8Odscrarr.receive(T4C8Odscrarr.java:214) oracle.jdbc.driver.T4CStatement.doDescribe(T4CStatement.java:723) oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3276) oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1914) oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1563) org.apache.jsp.insert_005fsuccess_jsp._jspService(insert_005fsuccess_jsp.java:92) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs. -------------------------------------------------------------------------------- Apache Tomcat/6.0.29[/code] 实在不知道哪里错了。。希望路过的大家帮忙看下。
求助下关于VB6连接SQL Sever 2008数据库的问题
Private Sub Borrow_Click() '单击“借书”按钮 Dim Readernumber, ISBN, BookID As String Dim in_ReaderID, in_ISBN, in_BookID, out_str '储存过程执行的参数 Dim ReturnValue As Integer '定义返回值变量 Dim Strs As String Readernumber = ReaderID.Text ISBN = T_ISBN.Text BookID = T_BookID.Text '如果借书证号、ISBN、图书ID均不为空 If Readernumber <> "" And ISBN <> "" And BookID <> "" Then SqlCmd.CommandText = "Book_Borrow" SqlCmd.CommandType = adCmdStoredProc '追加参数法调用存储过程 Set in_ReaderID = SqlCmd.CreateParameter("@in_ReaderID", adChar, adParamInput, 8) SqlCmd.Parameters.Append (in_ReaderID) Set in_ISBN = SqlCmd.CreateParameter("@in_ISBN", adChar, adParamInput, 18) SqlCmd.Parameters.Append (in_ISBN) Set in_BookID = SqlCmd.CreateParameter("@in_BookID", adChar, adParamInput, 10) SqlCmd.Parameters.Append (in_BookID) Set out_str = SqlCmd.CreateParameter("@out_str", adChar, adParamInput, 30) SqlCmd.Parameters.Append (out_str) '参数赋值 SqlCmd("@in_ReaderID") = ReaderID.Text SqlCmd("@in_ISBN") = T_ISBN.Text SqlCmd("@in_BookID") = T_BookID.Text SqlCmd.Execute (ReturnValue) '执行存储过程,并将返回值赋给ReturnValue Strs = SqlCmd.Parameters("@out_str") '将存储过程输出参数的值赋给变量Strs MsgBox (Strs) '给出提示信息 '删除参数 SqlCmd.Parameters.delete ("@in_ReaderID") SqlCmd.Parameters.delete ("@in_ISBN") SqlCmd.Parameters.delete ("@in_BookID") SqlCmd.Parameters.delete ("@out_str") '刷新BorrowADO控件 BorrowADO.RecordSource = "SELECT * FROM RBL WHERE 借书证号='" + Trim(Readernumber) + "'" BorrowADO.Refresh Else MsgBox ("请输入正确的借书信息!") End If End Sub 数据库已经设置好,Book_Borrow存储过程也设置好了,在SQL中执行未出错 代码中 SqlCmd.Execute (ReturnValue) '执行存储过程,并将返回值赋给ReturnValue 这一行出错 实时错误'-2147217904 (80040e10)' 过程或函数'Book_Borrow'需要参数'@out_str',但未提供该参数 希望有高手可以帮我查查错,感谢 附上SQL里的设置 USE MBOOK GO CREATE PROCEDURE Book_Borrow @in_ReaderID char(6),@in_ISBN char(18), @in_BookID char(10),@out_str char(30) OUTPUT AS BEGIN /*判断是否存在该读者*/ IF NOT EXISTS(SELECT * FROM TReader WHERE 借书证号=@in_ReaderID) BEGIN SET @out_str='该读者不存在' RETURN 0 END /*判断是否存在该图书*/ IF NOT EXISTS(SELECT * FROM TBook WHERE ISBN=@in_ISBN) BEGIN SET @out_str='该图书不存在' RETURN 0 END /*判断借书量是否已经到了借书上限数5*/ IF(SELECT 借书量 FROM TReader WHERE 借书证号=@in_ReaderID)=5 BEGIN SET @out_str='读者借书量不能大于5' RETURN 0 END /*判断库存量是否为0*/ IF (SELECT 库存量 FROM TBook WHERE ISBN=@in_ISBN)=0 BEGIN SET @out_str='图书库存量为0' RETURN 0 END /*判断读者是否已经借过该书*/ IF @in_ISBN IN (SELECT ISBN FROM TLend WHERE 借书证号=@in_BookID) BEGIN SET @out_str='读者已经借过该书' RETURN 0 END /*判断该书是否已经被借*/ IF EXISTS(SELECT * FROM TLend WHERE 图书ID=@in_BookID) BEGIN SET @out_str='该图书ID已存在' RETURN 0 END BEGIN TRAN /*开始一个事务*/ /*插入借书记录*/ INSERT INTO TLend(借书证号,ISBN,图书ID,借书时间) VALUES(@in_ReaderID,@in_ISBN,@in_BookID,GETDATE()) IF @@ERROR>0 /*如果前面一条SQL语句出错则回滚事务并返回*/ BEGIN ROLLBACK TRAN SET @out_str='执行过程中遇到错误' RETURN 0 END UPDATE TReader SET 借书量=借书量+1 WHERE 借书证号=@in_ReaderID IF @@ERROR>0 /*如果前面一条SQL语句出错则回滚事务并返回*/ BEGIN ROLLBACK TRAN SET @out_str='执行过程中遇到错误' RETURN 0 END UPDATE TBook SET 库存量=库存量-1 WHERE ISBN=@in_ISBN IF @@ERROR>0 /*如果前面一条SQL语句出错则回滚事务并返回*/ BEGIN ROLLBACK TRAN SET @out_str='执行过程中遇到错误' RETURN 0 END UPDATE TBLend SET 是否借出=1 WHERE 图书ID=@in_BookID IF @@ERROR=0 /*如果所有语句都不出错则结束事务并返回*/ BEGIN COMMIT TRAN SET @out_str='借书成功' RETURN 1 END ELSE /*如果执行出错则回滚所有操作并返回*/ BEGIN ROLLBACK TRAN SET @out_str='执行过程中遇到错误' RETURN 0 END END 这是在SQL 2008中执行的Borrow_Book过程
无法更新数据到MySQL。
management.jsp(用post传到mcheckreview.jsp处理) ``` <form method="post" action="mcheckreview.jsp" > <div style="overflow-y:scroll; position:relative; right:100px; overflow-x:none; height:180px;"> <table border="0" width="100%"> <tr> <td width="10%" style="text-align:center">编号</td> <td width="20%" style="text-align:center">电话</td> <td width="60%" style="text-align:center">评论</td> <td width="10%" style="text-align:center">回复</td> </tr> <% while(rs.next()) { String id=rs.getString(1); String number=rs.getString(2); String content=rs.getString(3); %> <tr> <td style="text-align:center" name="id"><input name="id" value='<%=id %>' style="background:grey; border:none; outline:none; text-align:center;"> </td> <td style="text-align:center" ><%=number %> </td> <td style="text-align:center"><%=content %> </td> <td><input type="submit" value="回复" ></td> </tr> <% } %> </table> </div> <input type="text" name="back"> </form> `````` mcheckreview.jsp ``` <% Connection conn = null; PreparedStatement ps = null; Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/wutourism?&useUnicode=true&characterEncoding=UTF-8"; String username = "root"; String password = "imissyou15"; conn = DriverManager.getConnection(url, username, password); request.setCharacterEncoding("utf-8");//设置编码方式,防止中文乱码 String id = request.getParameter("id"); String back = request.getParameter("back");//insert into review(id,back) values(?,?) String sql = "update review set back=? where id=?"; ps = conn.prepareStatement(sql); ps.setString(1, id); ps.setString(2,back); int row = ps.executeUpdate(); if(row>0){ System.out.print(request.getParameter("id")); System.out.print(request.getParameter("back"));//测试是否取到上个页面的值 out.println("<script language='javascript'>alert('成功!');window.location.href='./management.jsp';</script>"); } ps.close(); conn.close(); %> ``` 问题:1: System.out.print(request.getParameter("id")); System.out.print(request.getParameter("back")); 把这两行代码放在if外面,命令行就可以输出取到的值;但放在if里面就取不到,是这里出错了吧?可是我注册语句这样写就没问题欸。 2: 取出来的数据id总是1,但我提交的时候点的并不是id=1那一行。 尝试:我觉得可能我sql语句有错,就从insert改到update,然后set back=?(set back='"+back+"') ,where id=?(where id='"+id+"')我都写过,但还是不对,改的时候也出现报错说 int row=ps.executeUpdate();那一句 说明:现在这样的代码问题在于 ,数据传不到数据库,但也不输出报错,也不会重定向到management.jsp(也就是上面那个页面)
求助,VS下用ODBC链接不上oracle数据库
初学数据库,SQLConnect调用总是出错,查了一下发现一个跟我类似情况的 文章链接:http://bbs.csdn.net/topics/390017214,但是题主也没说解决了没有,我按照评论里说的做了可是还是出错。数据源也配置且测试成功,数据库用的oracle12g。 代码如下: ``` #include<stdlib.h> #include<stdio.h> #include<windows.h> #include<sql.h> #include<sqlext.h> #include<Sqltypes.h> //using System.Data.Sqlclient /*#include<odbcinst.h > #include <odbcss.h> #pragma comment(lib,"odbc32.lib")*/ #define SNO_LEN 30 #define NAME_LEN 50 #define DEPART_LEN 100 #define SGENDER_LEN 5 int main(){ SQLHENV oraclehenv; SQLHDBC oraclehdbc; SQLHSTMT oraclehstmt; SQLRETURN ret; SQLCHAR sName[NAME_LEN], sDepart[DEPART_LEN], sGender[SGENDER_LEN], sSno[SNO_LEN]; //SQLCHAR oracleName[] = "Oracle", stmt[] = "INSERT INTO STUDENT (SNO,SNAME,SSEX,SAGE,SDEPT)VALUES(?,?,?,?,?)"; SQLINTEGER sAge; SQLINTEGER cbAge = 0, cbSno = SQL_NTS, cbGender = SQL_NTS, cbName = SQL_NTS, cbDepart = SQL_NTS; /*初始化环境*/ ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &oraclehenv); ret = SQLSetEnvAttr(oraclehenv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); /*建立连接*/ ret = SQLAllocHandle(SQL_HANDLE_DBC, oraclehenv, &oraclehdbc); ret = SQLConnect(oraclehdbc, (SQLCHAR*)"Oracle", SQL_NTS, (SQLCHAR*)"c##admin", SQL_NTS, (SQLCHAR*)"admin", SQL_NTS); if (!SQL_SUCCEEDED(ret)) { printf("数据库连接失败!\n"); system("pause"); return -1; } /*初始化语句句柄*/ ret = SQLAllocHandle(SQL_HANDLE_STMT, oraclehdbc, &oraclehstmt); ret = SQLExecDirect(oraclehstmt, (SQLCHAR*)"SELCET * FROM STUDENT", SQL_NTS); if (ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO) { ret = SQLBindCol(oraclehstmt, 1, SQL_C_CHAR, sSno, SNO_LEN, &cbSno); ret = SQLBindCol(oraclehstmt, 2, SQL_C_CHAR, sName, NAME_LEN, &cbName); ret = SQLBindCol(oraclehstmt, 3, SQL_C_CHAR, sGender, SGENDER_LEN, &cbGender); ret = SQLBindCol(oraclehstmt, 4, SQL_C_LONG, &sAge, 0, &cbAge); ret = SQLBindCol(oraclehstmt, 5, SQL_C_CHAR, sDepart, DEPART_LEN, &cbDepart); //printf("%s,%s,%s,%d,%s\n", cbSno, cbName, cbGender, cbAge, cbDepart); } while ((ret = SQLFetch(oraclehstmt)) != SQL_NO_DATA_FOUND) { if (ret == SQL_ERROR) printf("Fetch error\n"); else printf("%s,%s,%s,%d,%s\n", cbSno, cbName, cbGender, cbAge, cbDepart); } SQLFreeHandle(SQL_HANDLE_STMT, oraclehstmt); SQLDisconnect(oraclehdbc); SQLFreeHandle(SQL_HANDLE_DBC, oraclehdbc); SQLFreeHandle(SQL_HANDLE_STMT, oraclehenv); system("pause"); return 0; } ```
我想在执行注册前先查询数据表里用户名出现的次数,如果次数不为0则给提示
<%@page import="com.sun.corba.se.spi.orbutil.fsm.Guard.Result"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import= "edu.jmi.db.*" %> <%@ page import= "edu.jmi.dao.*" %> <%@ page import= "edu.jmi.model.*" %> <%@ page import= "java.sql.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <style type="text/css"> </style> <body> <center> <% String str =null; //1设置解码 request.setCharacterEncoding("utf-8"); //2获取参数 str=request.getParameter("name"); String str1=request.getParameter("password"); String str2=request.getParameter("password2"); String str3=request.getParameter("mail"); System.out.println(str+str1+str2+str3); if(str==null){//如果初次加载页面,直接返回,不会执行下面存取数据库的代码 //return; }else{ //3存取数据库 //3.1获取数据库链接 Connection conn=DB.getConnection(); //3.2准备插入sql语句 String sql2="select count(*) from table where column='name'"; PreparedStatement pst2=conn.prepareStatement(sql2); if(count!=0){ session.setAttribute("errmsg2", "用户名已存在,请重新输入"); }else{ String sql="insert into user(name,password,email) values(?,?,?)"; PreparedStatement pst=conn.prepareStatement(sql);//执行sql语句 // pst.setInt(1,1); //id pst.setString(1,str);//name pst.setString(2,str1);//pass pst.setString(3,str3);//email if(str1.equals(str2)){ //3.3执行插入 int res=pst.executeUpdate(); System.out.println("插入结果是:"+res); pst.close(); conn.close(); session.setAttribute("usr", str); response.sendRedirect("regok.jsp"); }else{ session.setAttribute("errmsg", "密码和确认密码不一致"); } String err = (String)session.getAttribute("errmsg"); if(err==null){ err=""; } String err2 = (String)session.getAttribute("errmsg2"); if(err2==null){ err2=""; } } } %> <%=session.getAttribute("errmsg") %> <%=session.getAttribute("errmsg2") %> <form action="" > <p>用户名:<input type="text" value="" name="name"></p> <p>密码:<input type="password" value="" name="password"></p> <p>确认密码:<input type="password" value="" name="password2"></p> <p>邮箱:<input type="text" value="" name="mail"></p> <input type="submit" value="注册"> <input type="reset" value="重置"> </form> </center> </body> </html> 我想在执行注册前先查询数据表里用户名出现的次数,如果次数不为0则给提示,不执行之后的操作,但是查询次数的语句好像出错了,求大神 String sql2="select count(*) from table where column='name'"; PreparedStatement pst2=conn.prepareStatement(sql2); if(count!=0){ session.setAttribute("errmsg2", "用户名已存在,请重新输入"); }else{ }
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问