插入操作:
//ODBC 数据库表示方式
QSqlQuery query;
query.prepare( “insert into student (id, name) ”
                  “values (:id, :name) ”);
query.bindValue(0, m_id);
query.bindValue(1, m_name);
query.exec();
 
 
//Oracle 表示方式
query.prepare( “insert into student (id, name) ”
                  “values (?, ?) ”);
query.bindValue(0, m_id);
query.bindValue(1,m_name);
query.exec();以上两种方式,插入不了数据.
由于需要使用变量,还有哪种种插入操作使用。谢谢!!

解决方案 »

  1.   

    直接用拼接SQL语句的方式可以实现  
    "insert into student (id, `name`) values ('" + m_id+ "', '" + m_name+ "')" ;参数方式是可以的, 我沒用过QT, c# 就可以通过参数实现.
    C#参数方式示例:            STRING SQL = "insert into student (id, `name`) values(?id, ?name)";
                OdbcCommand cmd = NEW OdbcCommand(SQL, conn);
                cmd.Parameters.Add("?id",OdbcType.VarChar).Value=m_id;
                cmd.Parameters.Add("?name", OdbcType.VarChar).Value = m_name;
                try
                {
                    conn.Open();
                    INT num = cmd.ExecuteNonQuery();
                    RETURN num;
                }
                catch (Exception ex)
                {
                    RETURN 0;
                }
                finally
                {
                    conn.Close();
                    conn.Dispose();
                }
    你將参数表示  (:id, :name) 改成 (?id, ?name))  试试了.
      

  2.   

    列名name为关键字, 需要加上 "  `  "   (`列名`)  ,  否则执行会出错
      

  3.   

    直接用拼接SQL语句的方式可以实现  
    "insert into student (id, `name`) values ('" + m_id+ "', '" + m_name+ "')" ;
    如果变量类型是日期类型,这种方式不行啊。
      

  4.   

    日期类型, 也一样可以插入的。 
     date 类型, 对应插入的日期格式化成字符串  ‘yyyy-MM-dd’
     datetime 类型, 对应插入的日期格式化成字符串  ‘yyyy-MM-dd HH:mm:ss’