各位好!
    关于SQL连接方面的问题,大家帮我看看,程序编译到object obj = cmd.ExecuteScalar();这句时,说我的SQL文附近有问题,        
            string gh = textBox1 .Text ;
            string paw =textBox2 .Text ;
            string cs = "dsn=changjj;server=(local);UID=sa;PWD=security_1";
            OdbcConnection conn = new OdbcConnection(cs);
            try
            {
                conn.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
            if (gh.Trim () == "" && paw.Trim () == "") return;
            string sql = @"insert into table_1(user,password) values ('" + gh + "','" +paw + "')";
            OdbcCommand cmd = new OdbcCommand(sql, conn);
            object obj = cmd.ExecuteScalar();
            conn.Close ();            Form temp = new FormMain();
            temp.Show();

解决方案 »

  1.   

    是编译到那还是执行到那?
    设置断点看看sql的内容是什么
      

  2.   

    那个ExecuteScalar是返回记录集第一行第一列
    现在是插入语句用ExecuteNonQuery
      

  3.   

    object obj = cmd.ExecuteScalar(); 
    改为int result = cmd.ExecuteNonQuery(); ExecuteScalar方法是针对select语句的,必须返回一行数据,然后取其第一列的值,你就一个insert语句,怎么能用ExecuteScalar方法啊。
      

  4.   

    跟踪一下看你的sql语句是不是有问题?debug一下看看
      

  5.   

    改了之后 ,进行DEBUG ,还是报一样的错.
    错误信息:
    ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]キーワード 'user' 付近に不適切な構文があります。
      

  6.   

    不好意思,是执行到那个地方,sql的内容是什么是正确.
    object obj = cmd.ExecuteScalar(); 执行到这一行,报错:
    错误信息: 
    ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]キーワード 'user' 付近に不適切な構文があります。
      

  7.   

    user是关键字,用[]括起来,[user]
      

  8.   

    string sql = "insert into table_1(user,password) values ('" + gh + "','" +paw + "')"; 
    去掉@符号,二楼三楼的你们别误导别人,插入就是用ExecuteScalar()
    user是关键字,要用中括号括起来
      

  9.   

    int obj = Convert.ToInt32(cmd.ExecuteScalar());
    如果你有自动增长的表识列,他会把你刚插入的数据的表识列ID显示出来!