各位好,我是C#新手,下面的代码执行时总提示 insert into 语句语法错误,可否帮我看看问题出再哪里? public partial class frmLogin : Form
    {
        string userName;
        string userPwd;
        //读取app.config文件的数据库配置;
        string connStr = ConfigurationManager.ConnectionStrings["dataConnStr"].ConnectionString;
        public frmLogin()
        {
            InitializeComponent();
        }        private void label3_Click(object sender, EventArgs e)
        {
            frmRegister register = new frmRegister();
            register.Show();
            this.Hide();        }        private void btnCancel_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }        private void btnOk_Click(object sender, EventArgs e)
        {
            userName = tbxName.Text;
            userPwd = tbxPwd.Text;
            frmMain main = new frmMain();
            main.userName = userName;//传递用户信息给窗体frmMain;
            try
            {
                OleDbConnection conn = null;
                OleDbCommand cmd = null;
                OleDbDataReader dr = null; 
                conn = new OleDbConnection(connStr);
                conn.Open();
                string sql = "select * from [user] where [userName]='"+userName+"'and [userPwd]='"+userPwd+"'";
                cmd = new OleDbCommand(sql,conn);
                //cmd.Parameters
                dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    insertLog();
                    main.Show();
                    this.Hide();
                }
                else
                {
                    MessageBox.Show("用户名或密码错误!如果未注册,请先注册!");
                    tbxName.Text = "";
                    tbxPwd.Text = "";
                    tbxName.Focus();
                }
                dr.Close();
                cmd.Connection.Close();
                conn.Close();  
                return;
            }
            catch(Exception e1)
            {
                MessageBox.Show(e1.Message);
            }        }        public void  insertLog()
        {
            string loginTime = DateTime.Now.ToString();
            try
            {
                OleDbConnection conn2 = null;
                conn2 = new OleDbConnection(connStr);
                conn2.Open();
                string sql2 = "insert into [log](userName,date) values('" + userName + "','" + loginTime + "')";
                OleDbCommand cmd2 = new OleDbCommand(sql2, conn2);
                cmd2.ExecuteNonQuery();
                cmd2.Connection.Close();
                conn2.Close();
            }
            catch (Exception e2)
            {
                MessageBox.Show(e2.Message);
            }
        
        }
    }

解决方案 »

  1.   

    解决了------------------------------
    由于time在数据库中保留字,故插入时要加[ ]
    string sql2 = "insert into [log](userName,[date]) values('" + userName + "','" + loginTime + "')";在spring21st的个人空间里搜到了资料,感谢spring21st!
      

  2.   

    另外,那个应该写string sql2 = "insert into [log](userName,[date]) values('" + userName.Replace("'","''") + "','" + loginTime + "')";
      

  3.   


    既然报了语法错误就调试运行时SQL。打印出来,看能不能执行
      

  4.   

    由于time在数据库中保留字,故插入时要加[ ] 这句是搜到的原文字,我这里就是要把date加上[],你这里的userName.Replace("'","''") 带了Replace("'","''") 和不带区别在哪里,有什么影响,我是新手 如果是比较幼稚的问题 请见谅 还望解释下,谢谢