每次运行都会出现System.Data.SqlClient.SqlException","附近有语法错误

private void InsertInfo() { Random rd = new Random(); int iDown = 100000; int iUp = 999999; int num = Convert.ToInt32(rd.Next(iDown, iUp)); int NumPeo = Convert.ToInt32(this.nudNum.Value); DateTime date = this.dtFromtime.Value; dbh = new DBHelper(); dbh.OpenConn(); string sql = "insert into UserFlyInfo values('"+No+"','"+Company+"',"+FromAddress+","+Goaddress+",'"+Fromtime+"','"+Gotime+"','"+Price+"',"+NumPeo+",'"+date+"','"+num+"')"; SqlCommand command = new SqlCommand(sql, dbh.Conn); int cancle = command.ExecuteNonQuery(); if(cancle>0) { MessageBox.Show("预订成功! 订单编号:" + num); } else { MessageBox.Show("预定失败!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } }

调试的时候 int cancle = command.ExecuteNonQuery(); 是这句出现问题 ,老是找不出问题

断点跟踪command.ExecuteNonQuery();这句.看它的返回值是什么.

不为-1即为数据插入成功.否则代表数据无法被插入,同时重新断点,从当前方法的第一句开始跟踪.

逐步检查每一句是否都有正常的返回值.

如果语法没有错误.检查是不是拼写问题,

最好不要用拼接字符串的方式来拼接SQL语句,一方面性能不好,另一方面可能会产生SQL注射问题.再要命的就是拼接的长了,自己都能看晕.

用SqlCommand.Parameters 属性来提交SQL语句并拼接参数.

另外再补充一句,不要把SQL语句中的需要传值的参数给隐藏掉.这点很不好.很容易在写SQL语句时造成错误.不要偷懒或者耍小聪明用简化写法.请完整编写SQL语句.


MSDN中的参考方法如下:

private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
{
    // Update the demographics for a store, which is stored 
    // in an xml column. 
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
        + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;

        // Use AddWithValue to assign Demographics.
        // SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml);

        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-19
1数据库是否连接
2插入语句是否正确

每次运行都会出现System.Data.SqlClient.SqlException","附近有...
不为-1即为数据插入成功.否则代表数据无法被插入,同时重新断点,从当前方法的第一句开始跟踪.逐步检查每一句是否都有正常的返回值.如果语法没有错误.检查是不是拼写问题,最好不要用拼接字符串的方式来拼接SQL语句,一方面性能不好,另一方面可能会产生SQL注射问题.再要命的就是拼接的长了,自己都能看晕....

System.Data.SqlClient.SqlException: ' ' 附近有语法错误。
1、你SQL语句字符串拼接没有问题,2、问题估计出在你的两个参数上:strUserName、strpswd,你应该单步调试一下,看这两个参数值是否正确

System.Data.SqlClient.SqlException: '=' 附近有语法错误
此类错误,一般是指最终拼凑字符串生成的SQL语句有问题,可检查=附件字段,一般有下列几种情况 是否缺少空格 字符串类型值少加了单引号(包括字符串内的单引号未进行替换处理)等号后面没有值进行占位。

System.Data.SqlClient.SqlException: 关键字 'and' 附近有语法错误...
此类错误,一般是指最终拼凑字符串生成的SQL语句有问题,可检查=附件字段,一般有下列几种情况 是否缺少空格 字符串类型值少加了单引号(包括字符串内的单引号未进行替换处理)等号后面没有值进行占位。

...出现System.Data.SqlClient.SqlException (0x80131904...
1、通过 perfmon.exe 记录活动的连接数,是否为已达到连接池上限;2、做一个测试,每隔 5 秒打开一次连接,然后关闭,运行 1 周(根据你实际出错时的频率来定这个周期);3、是否是 Command Timeout ,而非 Connection Timeout,即连接没有问题,而是执行的 SQL 时间较长,导致 Command Timeout,...

System.Data.SqlClient.SqlException: '0' 附近有语法错误。
sql语句写错了 Response.Write(str);把后面的注销,用这句输出一下放到sql里一执行你就明白了

[SqlException (0x80131904): '*' 附近有语法错误。]
异常详细信息: System.Data.SqlClient.SqlException: '*' 附近有语法错误。,检查sql语句那段代码,你给的问题补充看不到sql语句代码,你调试一下那块即可。

'Id' 附近有语法错误。
System.Data.SqlClient.SqlException: '=' 附近有语法错误。 源错误: 行 String sqlstr = String.Format ("updata item2 set num=num+1 where id 是否可以解决您的问题?

c# 运行时出现的错误 在线等
应该是查询语句,因为某些条目查询时间超时,查询数据库一般来说是不会超时的,那就是你的查询语句有问题了。

引发的异常:“System.Data.SqlClient.SqlException”(位于 System.Data...
sql 原来的句型是 insert into 表(列1,列2...列n) values('值1','值2'...'值n')明白了吧,你要把列的名称列出来,系统才知道往哪里插。

相似回答