using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    { }
         protected void Button1_Click(object sender, EventArgs e)
    {
        string aa = "Server=MYTV;User Id=sa;Pwd=;DataBase=BookStro";
        SqlConnection conn = new SqlConnection(aa);//建立与数据库的连接
        conn.Open();
        string ssql="insert into  BTable(name,ISBN,press,money,znum,writer,)values('"+TextBox1.Text.ToString()+"', '"+TextBox2.Text.ToString()+"','"+TextBox3.Text.ToString()+"','"+TextBox3.Text.ToString()+"','"+TextBox4.Text.ToString()+"','"+TextBox5.Text.ToString()+"','"+TextBox6.Text.ToString()+"')";//执行数据添加语句
       SqlCommand cc=new SqlCommand(ssql,conn);
        cc.ExecuteNonQuery();
        if (cc.ExecuteNonQuery() == 0)//判断数据添加是否成功
             {Response.Write("数据添加失败");}
                 else{
                     Response.Write("数据添加成功");
                 }
        conn.Close();
    }
}这是我编写的一段代码~但运行时~不能实现数据添加的功能~在点击添加按钮之后~数据库中没有任何添加的数据~~麻烦帮我看看这段代码的问题出现在哪里?

解决方案 »

  1.   

    BTable(name,ISBN,press,money,znum,writer,)最后面对了个逗号吧
      

  2.   

    Server=MYTV
    这个是什么?
    你连接的本地数据库么?你把断点打到ssql把生成的SQL 复制到查询分析器中跑一下看看
      

  3.   

    执行了两次cc.ExecuteNonQuery(),重复了。
      

  4.   

    建议你改用参数化sql语句:
    string ssql="insert into BTable(name,ISBN,press,money,znum,writer)values(@name,@ISBN,@press,@money,@znum,@writer)";
    SqlCommand cc=new SqlCommand(ssql,conn);
    cc.Parameters.AddWithValue("@name",TextBox1.Text);
    cc.Parameters.AddWithValue("@ISBN",TextBox2.Text);
    cc.Parameters.AddWithValue("@press",TextBox3.Text);
    ......
    cc.Parameters.AddWithValue("@writer",TextBox6.Text);
    cc.ExecuteNonQuery();
      

  5.   

    BTable(name,ISBN,press,money,znum,writer,)
    这个逗号是干什么的?
      

  6.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page  
    {
      protected void Page_Load(object sender, EventArgs e)
      { }
      protected void Button1_Click(object sender, EventArgs e)
      {
      string aa = "Server=MYTV;User Id=sa;Pwd=;DataBase=BookStro";
      SqlConnection conn = new SqlConnection(aa);//建立与数据库的连接
      conn.Open();
      string ssql="insert into BTable(name,ISBN,press,money,znum,writer)values('"+TextBox1.Text.ToString()+"', '"+TextBox2.Text.ToString()+"','"+TextBox3.Text.ToString()+"','"+TextBox3.Text.ToString()+"','"+TextBox4.Text.ToString()+"','"+TextBox5.Text.ToString()+"','"+TextBox6.Text.ToString()+"')";//执行数据添加语句
      SqlCommand cc=new SqlCommand(ssql,conn);
      if (cc.ExecuteNonQuery() == 0)//判断数据添加是否成功
      {Response.Write("数据添加失败");}
      else{
      Response.Write("数据添加成功");
      }
      conn.Close();
      }
    }
      

  7.   

    发现的问题有如下几个:
    1、insert into BTable(name,ISBN,press,money,znum,writer,)最后的逗号不能要
    2、cc.ExecuteNonQuery();这句话会执行两次。可以设置一个变量 int nResult = cc.ExecuteNonQuery();然后通过nResult来判断
    3、插入的字段是6个,而字段的值是7个,TextBox3.Text.ToString()写了两遍,数目不对应是不行的。
    4、这样拼凑出来的SQL语句,是有隐患的。你试想过没有,如果别人在文本框中输入了英文单引号会如何呢?
      

  8.   

    学会自己调试。你的代码没有try catch语句,有错误也不会爆出来。
      

  9.   


    被动啊   是让你把SQL语句拷贝到查询分析器  不是把代码考进去
    看1楼的   多个","
      

  10.   

    这种情况 我一般是把sql语句拿到sql server中跑一下看看 哪里错了一目了然 建议楼主养成这样的好习惯
      

  11.   


     string ConnectionString = WebConfigurationManager.ConnectionStrings[connStr].ConnectionString;        SqlConnection con = new SqlConnection(ConnectionString);
            try
            {
                con.Open();
                SqlCommand comm = new SqlCommand();
                comm.Connection = con;
                comm.CommandText = strSQL;
                comm.ExecuteNonQuery();
                con.Close();
                return 0;
            }
            catch (Exception e)
            {
                if (con.State != ConnectionState.Closed)
                    con.Close();
                strErrMsg = e.ToString();
                return -1;
            }
      

  12.   

    string ssql="insert into BTable(name,ISBN,press,money,znum,writer,)values('"+TextBox1.Text.ToString()+"', '"+TextBox2.Text.ToString()+"','"+TextBox3.Text.ToString()+"','"+TextBox3.Text.ToString()+"','"+TextBox4.Text.ToString()+"','"+TextBox5.Text.ToString()+"','"+TextBox6.Text.ToString()+"')";
    BTable(name,ISBN,press,money,znum,writer,)//多了一个逗号
    后面的values()里多了一个'"+TextBox3.Text.ToString()+"' 你前面指定的是6列 插入的确实7列
      

  13.   

    建议你,程序出现sql错误的时候,加个断点 然后把你的程序中的sql语句复制到sql中执行下  
      

  14.   

     if (cc.ExecuteNonQuery() == 0)//判断数据添加是否成功
      {Response.Write("数据添加失败");}
      else{
      Response.Write("数据添加成功");
      }
      conn.Close();
      }
     if (cc.ExecuteNonQuery() == 0)这样也能转化嘛!!
    程序也太不严谨了嘛!
      

  15.   

    已经试过了~但还是不行~
        添加数据的那个SQL语句功能没有显现出来~
           数据库中还是没有数据
      

  16.   

    19楼都说了,你的values()中有7个参数,你实际要插入的数目只有6个,请问你怎么能插入成功了?
      

  17.   

    告诉你个方法。当你碰到这中情况的时候,你就把你的sql语句拷出来到数据库里面执行一次。看是不是sql语句的问题,如果是,好办了。改sql语句就行了。如果不是,再回来看程序代码。加个断点,一步一步跟着走。看问题出在了哪里,一目了然。希望对你以后做程序有用。要学会自己找错误。
      

  18.   

    string ssql = "insert into  BTable(name,ISBN,press,mone,znum,writer) values (@name,@ISBN,@press,@mone,@znum,@writer)"服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: '=' 附近有语法错误。
       这里有什么错误~谁能指点一下
      

  19.   

    try catch 语句,看报什么错