none
修改数据库的时候提示输入的字符串格式不正确,求解答 RRS feed

  • 问题

  • //类里的操作数据库代码 

    public static int GetUpdateWorkName(string Newname,string Oldename)
            {
                string sql = string.Format(@"update Work set WorkName='{0]'
                                             where WorkName='{1}'", Newname,Oldename);

                SqlConnection connection = new SqlConnection(DBHerpel.connectionString);

                SqlCommand command = new SqlCommand(sql, connection);

                connection.Open();

                int count = command.ExecuteNonQuery();

                connection.Close();

                return count;
            }

    //界面中的代码

    private void UpdateWorkName()
            {
                //获取ListBox中选中的值
                string Oldname = lbxWorkList.Text.Trim();
                //获取TxTBox中的文本
                string Newname = txtWorkNane.Text.Trim();
                int count = -1;
                try
                {
                    count = WorkService.GetUpdateWorkName(Newname, Oldname);
                }
                catch (SqlException)
                {
                    MessageBox.Show("数据库出现异常");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("出现未知异常!"+ex.Message);
                }
                if (count>0)
                {
                    MessageBox.Show("修改成功!");
                    Filllbx();
                }
                else
                {
                    MessageBox.Show("修改失败!");
                }

            }

    2015年8月24日 11:48

答案

  • string sql = string.Format(@"update Work set WorkName='{0]'
                                             where WorkName='{1}'", Newname,Oldename);

    你得第一个占位符 右边大括号写成中括号

    然后,如果数据库报告格式不对,则你需要核对数据库表字段的类型和你的插入是否匹配


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。


    2015年8月24日 13:01
  • 你好,

    就像Bob说的那样,你的更新语句有问题。另外,为了防止SQL注入,我建议你使用参数化查询,请参考下面的代码:

           public static int GetUpdateWorkName(string Newname, string Oldename)
            {
                string sql = "update Work set WorkName=@newname where WorkName=@oldname";
    
                SqlConnection connection = new SqlConnection(DBHerpel.connectionString);
    
                SqlCommand command = new SqlCommand(sql, connection);
                command.Parameters.AddWithValue("@oldname", Oldename);
                command.Parameters.AddWithValue("@newname", Newname);
                connection.Open();
    
                int count = command.ExecuteNonQuery();
    
                connection.Close();
    
                return count;
            }

    2015年8月25日 7:35
    版主

全部回复

  • string sql = string.Format(@"update Work set WorkName='{0]'
                                             where WorkName='{1}'", Newname,Oldename);

    你得第一个占位符 右边大括号写成中括号

    然后,如果数据库报告格式不对,则你需要核对数据库表字段的类型和你的插入是否匹配


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。


    2015年8月24日 13:01
  • 你好,

    就像Bob说的那样,你的更新语句有问题。另外,为了防止SQL注入,我建议你使用参数化查询,请参考下面的代码:

           public static int GetUpdateWorkName(string Newname, string Oldename)
            {
                string sql = "update Work set WorkName=@newname where WorkName=@oldname";
    
                SqlConnection connection = new SqlConnection(DBHerpel.connectionString);
    
                SqlCommand command = new SqlCommand(sql, connection);
                command.Parameters.AddWithValue("@oldname", Oldename);
                command.Parameters.AddWithValue("@newname", Newname);
                connection.Open();
    
                int count = command.ExecuteNonQuery();
    
                connection.Close();
    
                return count;
            }

    2015年8月25日 7:35
    版主
  • 噢噢,没注意看,谢谢了
    2015年8月25日 9:42
  • 我这是个作业现在用不到,谢谢,这个我会留着
    2015年8月25日 9:43