我想向access的reader表中插入一条记录
表reader的结构为 :
readerID(主键) 文本
readerName 文本
readerPassword 文本
readerPhone 文本
readerStartTime 时间/日期 只有这个允许空
主要的代码如下:
using SDO = System.Data.OleDb;
string sConncet = string.Format("Provider={0};Data Source={1}{2}", "Microsoft.Jet.OLEDB.4.0;", System.AppDomain.CurrentDomain.BaseDirectory, "Library.mdb");
SDO.OleDbConnection dbConn = null;
dbConn = new SDO.OleDbConnection(sConncet);
dbConn.Open();
SDO.OleDbCommand dbCmd;
string sql;
public void createCmd(string table, string rID, string rname, string rpwd, string rphone)
{
sql = "insert into" + " " + table + " " + "values" + "(" + "'" + rID + "'" + "," + "'" + rname + "'" + "," + "'" + rpwd + "'" + "," + "'" + rphone + "'" + "," + "'" + DateTime.Now + "'" + ")" + " " + "go";
}
dbCmd = new SDO.OleDbCommand(sql, dbConn);
dbConn.Close();
21 个解决方案
#1
怎么没有回复啊,我的提问写的有问题吗
#2
+ "'" + rID + "'" + 改为 "+ rID +"
#3
sql = "insert into " + table + "(readerID,readerName ,readerPassword ,readerPhone ,readerStartTime ) values('" + rID + "','" + rname + "','" + rpwd + "','" + rphone + "','" + DateTime.Now.ToString() + "')";
#4
+1
#5
sql=String.Fomat("insert into {0} values({1},'{2},...')",i.toString(),...,DateTime.Now.toString());
你看看你的DateTime.Now,恩,你懂的
你看看你的DateTime.Now,恩,你懂的
#6
1,通过调试,你取出 sql语句
2,将sql语句拿到access中执行,如果执行不成功,你看一眼应该会找到错误的原因
2,将sql语句拿到access中执行,如果执行不成功,你看一眼应该会找到错误的原因
#7
access 可以直接执行sql 语句吗,行的话,执行的页面在那啊
#8
你的sql语句打印出来, 很多地方没空格,你自己注意一下,还有单引号问题
你的语句肯定是类似这样的
insert into表values()...
这样肯定不行的。把空格加上,再看一下单引号的问题,就应该可以了
你的语句肯定是类似这样的
insert into表values()...
这样肯定不行的。把空格加上,再看一下单引号的问题,就应该可以了
#9
Lz最好在用[]把字段和表名扩起来
#10
sql = "insert into " + table + "(readerID,readerName ,readerPassword ,readerPhone ,readerStartTime ) values('" + rID + "','" + rname + "','" + rpwd + "','" + rphone + "','" + DateTime.Now)
#11
你的这个dbCmd.ExecuteNonQuery();呢
至于sql语句有没有问题自己调试拿到查询分析器执行一下不就完了
#12
string sql="INSERT INTO" +'"+table+"'+"VALUES"('"+RID+"','"+NAME+"','"+rpwd+"','"+rphone+"')";
public void createCmd(string table, string rID, string rname, string rpwd, string rphone)
{
sql="INSERT INTO" +'"+table+"'+"VALUES"('"+RID+"','"+NAME+"','"+rpwd+"','"+rphone+"')";
//为什么你写的那么复杂呢 ?
}
dbCmd = new SDO.OleDbCommand(sql, dbConn);
dbConn.Close();
#13
dbCmd的执行没有啊,execute的语句呢?除了时间,其他字段不为空,那么给每个参数加上判空处理IsNullorEmpty()
#14
1、你的“readerID”作为主键,是自增的吗?
2、readerID 类型是什么,如果是整型的,就不需要加单引号了。
3、你怎么不把错误信息也贴出来(try catch一下)
2、readerID 类型是什么,如果是整型的,就不需要加单引号了。
3、你怎么不把错误信息也贴出来(try catch一下)
#15
insert into 表名(A,B,C...)VALUES('"+这里写你要添加的对象+"',"+这里是int类型的+",‘“+这里是字符串类型的+"’)
#16
执行语句在哪?
#17
access 当然是可以直接执行sql 语句的
在ACCESS数据库中 点击查询 -----在设计视图中创建查询--------然后根据自己需要选择需要查询的表或者单击右键选择 SQL视图 就可以执行SQL语句了
在ACCESS数据库中 点击查询 -----在设计视图中创建查询--------然后根据自己需要选择需要查询的表或者单击右键选择 SQL视图 就可以执行SQL语句了
#18
一般开发时,可能情况下都输出下sql语句,至少可以一眼看出sql语句有没问题
#19
access中 时间外面用“#”,我之前吃过亏。
#20
晕 没写这个语句 谢谢啊
#21
把语句放在 数据库中调试成功了 嘻嘻
#1
怎么没有回复啊,我的提问写的有问题吗
#2
+ "'" + rID + "'" + 改为 "+ rID +"
#3
sql = "insert into " + table + "(readerID,readerName ,readerPassword ,readerPhone ,readerStartTime ) values('" + rID + "','" + rname + "','" + rpwd + "','" + rphone + "','" + DateTime.Now.ToString() + "')";
#4
+1
#5
sql=String.Fomat("insert into {0} values({1},'{2},...')",i.toString(),...,DateTime.Now.toString());
你看看你的DateTime.Now,恩,你懂的
你看看你的DateTime.Now,恩,你懂的
#6
1,通过调试,你取出 sql语句
2,将sql语句拿到access中执行,如果执行不成功,你看一眼应该会找到错误的原因
2,将sql语句拿到access中执行,如果执行不成功,你看一眼应该会找到错误的原因
#7
access 可以直接执行sql 语句吗,行的话,执行的页面在那啊
#8
你的sql语句打印出来, 很多地方没空格,你自己注意一下,还有单引号问题
你的语句肯定是类似这样的
insert into表values()...
这样肯定不行的。把空格加上,再看一下单引号的问题,就应该可以了
你的语句肯定是类似这样的
insert into表values()...
这样肯定不行的。把空格加上,再看一下单引号的问题,就应该可以了
#9
Lz最好在用[]把字段和表名扩起来
#10
sql = "insert into " + table + "(readerID,readerName ,readerPassword ,readerPhone ,readerStartTime ) values('" + rID + "','" + rname + "','" + rpwd + "','" + rphone + "','" + DateTime.Now)
#11
你的这个dbCmd.ExecuteNonQuery();呢
至于sql语句有没有问题自己调试拿到查询分析器执行一下不就完了
#12
string sql="INSERT INTO" +'"+table+"'+"VALUES"('"+RID+"','"+NAME+"','"+rpwd+"','"+rphone+"')";
public void createCmd(string table, string rID, string rname, string rpwd, string rphone)
{
sql="INSERT INTO" +'"+table+"'+"VALUES"('"+RID+"','"+NAME+"','"+rpwd+"','"+rphone+"')";
//为什么你写的那么复杂呢 ?
}
dbCmd = new SDO.OleDbCommand(sql, dbConn);
dbConn.Close();
#13
dbCmd的执行没有啊,execute的语句呢?除了时间,其他字段不为空,那么给每个参数加上判空处理IsNullorEmpty()
#14
1、你的“readerID”作为主键,是自增的吗?
2、readerID 类型是什么,如果是整型的,就不需要加单引号了。
3、你怎么不把错误信息也贴出来(try catch一下)
2、readerID 类型是什么,如果是整型的,就不需要加单引号了。
3、你怎么不把错误信息也贴出来(try catch一下)
#15
insert into 表名(A,B,C...)VALUES('"+这里写你要添加的对象+"',"+这里是int类型的+",‘“+这里是字符串类型的+"’)
#16
执行语句在哪?
#17
access 当然是可以直接执行sql 语句的
在ACCESS数据库中 点击查询 -----在设计视图中创建查询--------然后根据自己需要选择需要查询的表或者单击右键选择 SQL视图 就可以执行SQL语句了
在ACCESS数据库中 点击查询 -----在设计视图中创建查询--------然后根据自己需要选择需要查询的表或者单击右键选择 SQL视图 就可以执行SQL语句了
#18
一般开发时,可能情况下都输出下sql语句,至少可以一眼看出sql语句有没问题
#19
access中 时间外面用“#”,我之前吃过亏。
#20
晕 没写这个语句 谢谢啊
#21
把语句放在 数据库中调试成功了 嘻嘻