原来做的没有错误。现在自己在写一下,怎么就错了。错误原因 就是“INSERT INTO 语句的语法错误”看半天也没有看出来
源码这样的
private void AddUser()
{
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\user.mdb;Jet OLEDB:Database Password = woailihuajun";
conn.Open();
string insert = "Insert into QQandPassword(id,num,password,addtime) values (@id,@QQ,@qqPassword,@datatime) ";
OleDbCommand comm=new OleDbCommand (insert,conn );
comm.Parameters.Add((new OleDbParameter("@id", OleDbType.Integer)));
comm.Parameters.Add((new OleDbParameter("@QQ",OleDbType.BSTR )));
comm.Parameters.Add((new OleDbParameter("@qqPassword", OleDbType.BSTR)));
comm.Parameters.Add((new OleDbParameter("@datatime", OleDbType.DBTimeStamp )));
comm.Parameters["@QQ"].Value = 1;
comm.Parameters["@QQ"].Value = textBox2.Text;
comm.Parameters["@qqPassword"].Value = textBox3.Text;
comm.Parameters["@datatime"].Value = DateTime.Now;
if (comm.ExecuteNonQuery()>0) // 这里语法错误 “INSERT INTO 语句的语法错误” {
MessageBox.Show("添加成功");
}
conn.Close();
}
源码这样的
private void AddUser()
{
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\user.mdb;Jet OLEDB:Database Password = woailihuajun";
conn.Open();
string insert = "Insert into QQandPassword(id,num,password,addtime) values (@id,@QQ,@qqPassword,@datatime) ";
OleDbCommand comm=new OleDbCommand (insert,conn );
comm.Parameters.Add((new OleDbParameter("@id", OleDbType.Integer)));
comm.Parameters.Add((new OleDbParameter("@QQ",OleDbType.BSTR )));
comm.Parameters.Add((new OleDbParameter("@qqPassword", OleDbType.BSTR)));
comm.Parameters.Add((new OleDbParameter("@datatime", OleDbType.DBTimeStamp )));
comm.Parameters["@QQ"].Value = 1;
comm.Parameters["@QQ"].Value = textBox2.Text;
comm.Parameters["@qqPassword"].Value = textBox3.Text;
comm.Parameters["@datatime"].Value = DateTime.Now;
if (comm.ExecuteNonQuery()>0) // 这里语法错误 “INSERT INTO 语句的语法错误” {
MessageBox.Show("添加成功");
}
conn.Close();
}
解决方案 »
- C# win7 webBrowser里面的脚本运行不起来,急
- ★★C# 调用系统API函数直接连接pos打印机的问题★★
- 【Help】如何将select * From Table 表返回信息导入ComboBox里面?【求助】
- 简单问题请教
- 用 System.Net.Mail.MailMessage类发送邮件总是不成功!
- grid简单问题,如何返回行数,在线等
- LED显示屏上文字显示内容的控制是用硬件厂家自己提供的软件合适还是自己编写程序进行控制合适?
- C#求解释,如下列图,BLL里面调用的Insert是接口里面的吗,还是 DALEntLib里面的方法,这个过程是怎么回事,怎么转到定义是跳到接口的方法
- webBrowser加载多个iframe模拟点击
- Randomize
- treelist在互相拖动时如何获取拖向的节点??
- 怎样添加用户许可协议
这句是什么意思?你查询可以得到所要结果?
还是sql的问题,好好检查一下,看看是否对关键字进行了转义,将关键字使用“[”和“]”括起来;
看看是否是引号用错。
id一般是自动增加字段类型,无需写在SQL语句里面最好
"Insert into QQandPassword([num],[password],[addtime]) values (@QQ,@qqPassword,@datatime) ";
我要模糊查询,后面的一个“%“为什么不能省略,不省略老是达不到效果。
每天逛下还是有些收获呀。呵呵
关键是comm.Parameters.Add((new OleDbParameter("@datatime", OleDbType.DBDate)));
comm.Parameters["@datatime"].Value = DateTime.Now;
添加进去的是日期,没有时间我要的是精确到秒的。
可是用comm.Parameters.Add((new OleDbParameter("@datatime", OleDbType.DBTimeStamp)));出现 标准表达式中数据类型不匹配
上面有人给出了“标准表达式中数据类型不匹配
”那样的也不符合我的,还是有错。
comm.Parameters["@datatime"].Value = DateTime.Now;
怎么样让在dataGridView1显示时候带有日期和时间的。
格式化啊
{0:yyyy-MM-dd}
这样用参数,可以提高安全性。
下面这段代码我习惯写成这样
comm.Parameters.Add((new OleDbParameter("@id", OleDbType.Integer)));
comm.Parameters.Add((new OleDbParameter("@QQ",OleDbType.BSTR )));
comm.Parameters.Add((new OleDbParameter("@qqPassword", OleDbType.BSTR)));
comm.Parameters.Add((new OleDbParameter("@datatime", OleDbType.DBTimeStamp )));
comm.Parameters["@QQ"].Value = 1;//这里楼主应该把ID号搞成QQ参数值了,改改看。
comm.Parameters["@QQ"].Value = textBox2.Text;
comm.Parameters["@qqPassword"].Value = textBox3.Text;
comm.Parameters["@datatime"].Value = DateTime.Now;这样也看看 comm.Parameters.Add((new OleDbParameter("@id", "1")));
comm.Parameters.Add((new OleDbParameter("@QQ",textBox2.Text.ToString())));
comm.Parameters.Add((new OleDbParameter("@qqPassword", textBox3.Text.ToString())));
comm.Parameters.Add((new OleDbParameter("@datatime", DateTime.Now.ToString())));
如果还不行,应该就是参数格式问题了,不过一般对于ACCESS来说,我都是直接使用字符串,没有定义其他类型,因为其他类型使用比较麻烦。
comm.Parameters["@QQ"].Value = textBox2.Text;
comm.Parameters["@qqPassword"].Value = textBox3.Text;
comm.Parameters["@datatime"].Value = DateTime.Now;这段删除掉。