wuwei1378 2021-09-13 21:23 采纳率: 66.7%
浏览 442
已结题

insert into access数据库,int类型的字段插入空值怎么写?

例句:
int age;
sql = "insert into data(username,sex,age)"
+ "values('" + dr["username"].ToString().Replace("'", "''") + "','" + dr["sex"].ToString().Replace("'", "'") + "'," +age + ")";
如果age类型是int,需要写入一个空值,怎么办?总是报错。

  • 写回答

9条回答 默认 最新

  • CSDN专家-showbo 2021-09-14 09:03
    关注

    之前回复过题主了。需要判断下数据是否为数字之类的,不是默认一个0或者null(注意是字符串,不能赋值为C#的null),因为组合成sql后会出错,sql没有值

    有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~

     
                int age;
                if (!int.TryParse(dr["age"].ToString(), out age)) age = 0;//这样,一定要为null,可以赋值为 age="null";这样拼接sql的时候就会变为 insert into data(username,sex,age)values('username','sex',null)"
                sql = "insert into data(username,sex,age)"
                + "values('" + dr["username"].ToString().Replace("'", "''") + "','" + dr["sex"].ToString().Replace("'", "'") + "'," +age + ")";
     
    
    
    

    组合SQL语句执行一定要防止sql注入,常用的方法
    1)内容替换
    字符串类将单引号号替换为实体对象'【&注意是英文状态下,csdn编辑器有问题,直接打英文状态下的实体对象显示不出来】或者直接去掉
    数字型,一定要先判断内容,如果是不是数字默认一个值0或者"null"(为null注意数据库字段设置一定要允许为空,要不执行sql会出错)
    2)SQL语句参数化,简单示例如下,不过参数化也解决不了类型问题,还是需要自己判断类型后不符合设置为默认值

    img

    using System;
    using System.Data.OleDb;
    using System.Data;
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string sql = "insert into data(username,sex,age)values(?,?,?)";
                OleDbConnection conn = new OleDbConnection(@"provider=microsoft.ace.oledb.12.0;data source=D:\文件\C#\Console\ConsoleApp1\bin\Debug\data.accdb");
                conn.Open();
                OleDbCommand cmd = new OleDbCommand(sql, conn);
                //注意access参数化传入的参数是按照参数出现顺序来添加,顺序能乱,名称随便起,一样也无所谓
                cmd.Parameters.Add(new OleDbParameter() { ParameterName = "?", OleDbType = OleDbType.VarWChar, Size = 20, Value = "username的值" });
                cmd.Parameters.Add(new OleDbParameter() { ParameterName = "p", OleDbType = OleDbType.VarWChar, Size = 20, Value = "sex的值" });
                cmd.Parameters.Add(new OleDbParameter() { ParameterName = "p", OleDbType = OleDbType.Integer, Value = 123 });
                cmd.ExecuteNonQuery();
                conn.Close();
                Console.ReadKey();
            }
        }
    }
    
    
    

    下面这个为我常用的类型判断类库,题主可以用类库判断类型不正确默认一个值

    using System;
    using System.Text.RegularExpressions;
    /// <summary>
    /// 数据有效性检查
    /// </summary>
    public class DataCheck
    {
        /// <summary>
        /// 判断内容是否为空
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public static bool IsNull(string v) { return string.IsNullOrEmpty(v) || v.Trim() == ""; }
        /// <summary>
        /// 判断是否为数字(浮点数之类)
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public static bool IsNumeric(string v)
        {
            return !IsNull(v) && Regex.IsMatch(v, @"^-?\d+(\.\d+)?$", RegexOptions.Compiled);
        }
        /// <summary>
        /// 判断是否为数字(整形)
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public static bool IsInt(string v)
        {
            return !IsNull(v) && Regex.IsMatch(v, @"^-?\d+$", RegexOptions.Compiled);
        }
        /// <summary>
        /// 判断是否为日期
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public static bool IsDate(string v)
        {
            DateTime dt = new DateTime();
            return !IsNull(v) && DateTime.TryParse(v, out dt);
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 9月22日
  • 已采纳回答 9月14日
  • 创建了问题 9月13日

悬赏问题

  • ¥15 【急】在线问答CNC雕刻机的电子电路与编程
  • ¥60 在mc68335芯片上移植ucos ii 的成功工程文件
  • ¥15 笔记本外接显示器正常,但是笔记本屏幕黑屏
  • ¥15 Python pandas
  • ¥15 蓝牙硬件,可以用哪几种方法控制手机点击和滑动
  • ¥15 生物医学数据分析。基础课程就v经常唱课程舅成牛逼
  • ¥15 云环境云开发云函数对接微信商户中的分账功能
  • ¥15 空间转录组CRAD遇到问题
  • ¥20 materialstudio计算氢键脚本问题
  • ¥15 有没有代做有偿主要做数据可视化部分即可(2023全国高考更省一本线理科类)