access-如何在Access中删除一行数据,怎么出错?? String sql="DELETE FROM T

问题描述

如何在Access中删除一行数据,怎么出错?? String sql="DELETE FROM T
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection conn= DriverManager.getConnection("jdbc:odbc:DDEmployer");
                Statement stat=conn.createStatement();
                String id=javax.swing.JOptionPane.showInputDialog(null,"请输入要删除的员工编号");
                String sql="DELETE FROM T_EMPLOYER WHERE ID=id";
                int i=stat.executeUpdate(sql);
                 System.out.println("成功删除"+i+"行");
如果执行这条语句,是删除了,但是删除的是全部啊??怎么接??
如果将SQL语句改为下面这个
String sql="DELETE FROM T_EMPLOYER WHERE T_EMPLOYER.ID=10";
则正常删除

解决方案

String sql="DELETE FROM T_EMPLOYER WHERE ID=id";
这个只会删除ID=id的,不会全部删除,除非你的所有ID字段都相同,并且等于id

解决方案二:

T-SQL级联删除——ON DELETE CASCADE

解决方案三:

ID NAME SEX NUMBERANDPHONE REGISTERDATE ADDRESS
6 张三 男 432424 2016/3/29 星期二 甘肃兰州
7 女 432432 2016/3/29 星期二 北京石景山
8 女 432424 2016/3/24 星期四 上海昆山
9 男 43234324 2016/3/3 星期四 广州深圳
10 男 100000000 2016/3/26 星期六 广州深圳
上面是我的数据库内容

解决方案四:

你把sql语句改成这样试试 DELETE FROM T_EMPLOYER WHERE ID=@id

解决方案五:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Data.SqlClient;

namespace Common
{
public static class AccessHelper
{
#region 基本功能
private static string connectionString;
public static string ConnectionString
{
get
{
return connectionString;
}
set
{
connectionString = value;
}
}
private static OleDbConnection GetOleDbConnection()
{
return new OleDbConnection(ConnectionString);
}

    public static DataSet ExecuteDataSet(string cmdText, params OleDbParameter[] p)
    {
        OleDbDataAdapter da = new OleDbDataAdapter(cmdText, ConnectionString);
        if (p != null)
        {
            da.SelectCommand.Parameters.AddRange(p);
        }
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }

    public static DataTable ExecuteDataTable(string cmdText, params OleDbParameter[] p)
    {
        OleDbDataAdapter da = new OleDbDataAdapter(cmdText, ConnectionString);
        if (p != null)
        {
            da.SelectCommand.Parameters.AddRange(p);
        }
        DataTable dt = new DataTable();
        da.Fill(dt);
        return dt;
    }

    public static DataRow ExecuteDataRow(string cmdText, params OleDbParameter[] p)
    {
        DataTable dt = ExecuteDataTable(cmdText, p);
        if (dt != null && dt.Rows.Count > 0)
            return dt.Rows[0];
        return null;
    }

    public static int ExecuteNonQuery(string cmdText, params OleDbParameter[] p)
    {
        OleDbConnection connection = GetOleDbConnection();
        OleDbCommand command = new OleDbCommand(cmdText, connection);
        connection.Open();
        if (p != null)
        {
            command.Parameters.AddRange(p);
        }
        int i = command.ExecuteNonQuery();
        connection.Close();
        return i;
    }

    public static object ExecuteScalar(string cmdText, params OleDbParameter[] p)
    {
        OleDbConnection connection = GetOleDbConnection();
        OleDbCommand cmd = new OleDbCommand(cmdText, connection);
        connection.Open();
        if (p != null)
        {
            cmd.Parameters.AddRange(p);
        }
        object obj = cmd.ExecuteScalar();
        connection.Close();
        return obj;
    }
    #endregion

    #region 扩展功能
    /// <summary>
    /// 根据唯一ID获取Hashtable
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="pkName">字段主键</param>
    /// <param name="pkVal">字段值</param>
    /// <returns></returns>
    public static Hashtable GetHashtableByGUID(string tableName, string pkName, string pkVal)
    {
        string cmdText = "SELECT * FROM " + tableName + " WHERE " + pkName + " = @GUID值";

        OleDbParameter[] parameters = new OleDbParameter[]
        {
            new OleDbParameter("@GUID值",pkVal)
        };

        DataTable dt = ExecuteDataTable(cmdText, parameters);
        return DataTableHelper.DataTableToHashtable(dt);
    }
    public static Hashtable GetHashtableById(string tableName, string pkName, string pkVal)
    {
        string cmdText = "SELECT * FROM " + tableName + " WHERE " + pkName + " = @ID";

        OleDbParameter[] parameters = new OleDbParameter[]
        {
            new OleDbParameter("@ID",pkVal)
        };

        DataTable dt = ExecuteDataTable(cmdText, parameters);
        return DataTableHelper.DataTableToHashtable(dt);
    }

    /// <summary>
    /// 对象参数转换
    /// </summary>
    /// <param name="ht"></param>
    /// <returns></returns>
    private static OleDbParameter[] GetParameter(Hashtable ht)
    {
        OleDbParameter[] parameters = new OleDbParameter[ht.Count];
        int i = 0;
        foreach (string key in ht.Keys)
        {
            parameters[i] = new OleDbParameter("@" + key, ht[key]);
            i++;
        }
        return parameters;
    }

    /// <summary>
    /// 通过Hashtable插入数据
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="ht">Hashtable</param>
    /// <returns>int</returns>
    public static int InsertByHashtable(string tableName, Hashtable ht)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append(" Insert Into ");
        sb.Append(tableName);
        sb.Append("(");
        StringBuilder sp = new StringBuilder();
        StringBuilder sb_prame = new StringBuilder();
        foreach (string key in ht.Keys)
        {
            sb_prame.Append("," + key);
            sp.Append(",@" + key);
        }
        sb.Append(sb_prame.ToString().Substring(1, sb_prame.ToString().Length - 1) + ") Values (");
        sb.Append(sp.ToString().Substring(1, sp.ToString().Length - 1) + ")");
        return ExecuteNonQuery(sb.ToString(), GetParameter(ht));
    }

    /// <summary>
    /// 通过Hashtable修改数据
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="pkName">字段主键</param>
    /// <param name="pkValue"></param>
    /// <param name="ht">Hashtable</param>
    /// <returns>int</returns>
    public static int UpdateByHashtable(string tableName, string pkName, string pkVal, Hashtable ht)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append(" UPDATE ");
        sb.Append(tableName);
        sb.Append(" SET ");
        bool isFirstValue = true;
        foreach (string key in ht.Keys)
        {
            if (isFirstValue)
            {
                isFirstValue = false;
                sb.Append(key);
                sb.Append("=");
                sb.Append("@" + key);
            }
            else
            {
                sb.Append("," + key);
                sb.Append("=");
                sb.Append("@" + key);
            }
        }

        string where = string.Format(" WHERE {0} = '{1}'",pkName,pkVal);
        sb.Append(where);

        OleDbParameter[] parameters = GetParameter(ht);
        return ExecuteNonQuery(sb.ToString(), parameters);
    }
    /// <summary>
    /// 表单提交:新增,修改
    ///     参数:
    ///     tableName:表名
    ///     pkName:字段主键
    ///     pkVal:字段值
    ///     ht:参数
    /// </summary>
    /// <returns></returns>
    public static bool AddOrEdit(string tableName, string pkName, string pkVal, Hashtable ht)
    {
        if (string.IsNullOrEmpty(pkVal))
        {
            if (InsertByHashtable(tableName, ht) > 0)
                return true;
            else
                return false;
        }
        else
        {
            if (UpdateByHashtable(tableName, pkName, pkVal, ht) > 0)
                return true;
            else
                return false;
        }
    }

    /// <summary>
    /// 根据主键删除数据
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="pkName">主键字段名(也可以不是主键)</param>
    /// <param name="pkVal">字段值</param>
    /// <returns></returns>
    public static int DeleteData(string tableName, string pkName, string pkVal)
    {
        string cmdText = "DELETE FROM " + tableName + " WHERE " + pkName + " = @ID";
        OleDbParameter[] parameters = new OleDbParameter[]
        {
            new OleDbParameter("ID",pkVal),
        };

        return ExecuteNonQuery(cmdText, parameters);
    }

    /// <summary>
    /// 根据条件删除数据
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="where">条件</param>
    /// <returns></returns>
    public static int DeleteData(string tableName, string where)
    {
        string cmdText = "DELETE FROM " + tableName + " " + where;
        return ExecuteNonQuery(cmdText, null);
    }

    /// <summary>
    /// 批量删除
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="pkName">主键字段名(也可以不是主键)</param>
    /// <param name="pkVal">字段值</param>
    /// <returns></returns>
    public static int BatchDeleteData(string tableName, string pkName, object[] pkValues)
    {
        OleDbParameter[] parameters = new OleDbParameter[pkValues.Length];
        int index = 0;
        string str = "@ID" + index;
        StringBuilder sql = new StringBuilder("DELETE FROM " + tableName + " WHERE " + pkName + " IN (");
        for (int i = 0; i < (parameters.Length - 1); i++)
        {
            object obj2 = pkValues[i];
            str = "@ID" + index;
            sql.Append(str).Append(",");
            parameters[index] = new OleDbParameter(str, obj2);
            index++;
        }
        str = "@ID" + index;
        sql.Append(str);
        parameters[index] = new OleDbParameter(str, pkValues[index]);
        sql.Append(")");
        return ExecuteNonQuery(sql.ToString(), parameters);
    }

    /// <summary>
    /// 判断数据是否存在
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="pkName">主键字段名(也可以不是主键)</param>
    /// <param name="pkVal">字段值</param>
    /// <returns></returns>
    public static bool IsExist(string tableName, string pkName, string pkVal)
    {
        string cmdText = "SELECT COUNT(1) FROM " + tableName + " WHERE " + pkName + " = @" + pkName;
        OleDbParameter[] parameters = {
                                     new OleDbParameter("@" + pkName,pkVal)};
        return (int)ExecuteScalar(cmdText, parameters) == 1;
    }

    /// <summary>
    /// 判断数据是否存在
    /// </summary>
    /// <param name="tableName"></param>
    /// <param name="where"></param>
    /// <returns></returns>
    public static bool IsExist(string tableName, string where)
    {
        string cmdText = "SELECT COUNT(1) FROM " + tableName + " " + where;
        return (int)ExecuteScalar(cmdText, null) == 1;
    }

    /// <summary>
    /// 批量拷贝数据
    /// </summary>
    /// <param name="maplist">列名映射</param>
    /// <param name="tableName">目标表名</param>
    /// <param name="dt">源数据源</param>
    /// <returns></returns>
    public static bool SqlBulkCopyImport(List<string> maplist, string tableName, DataTable dt)
    {
        SqlConnection conn = new SqlConnection(connectionString);
        conn.Open();
        SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString);
        bulkCopy.DestinationTableName = tableName;
        foreach (string a in maplist)
        {
            bulkCopy.ColumnMappings.Add(a, a);
        }
        bulkCopy.BatchSize = 1000;
        bulkCopy.WriteToServer(dt);

        conn.Close();
        return true;
    }
    public static void insertByDataTable(string tableName, DataTable dt)
    {
        for (int i = 1; i < dt.Rows.Count; i++)
        {
            string sb = " insert into " + tableName + "(";
            string columns = string.Empty;
            string values = string.Empty;
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                if (!string.IsNullOrEmpty(dt.Rows[i][dt.Columns[j].ColumnName].ToString()))
                {
                    columns += dt.Columns[j].ColumnName + ",";
                    if (dt.Columns[j].ColumnName.Contains("时间"))
                    {
                        values += "#" + dt.Rows[i][dt.Columns[j].ColumnName] + "#,";
                    }
                    else
                    {
                        values += "'" + dt.Rows[i][dt.Columns[j].ColumnName] + "',";
                    }
                }
            }
            sb = sb + columns.TrimEnd(',') + ") values(" + values.TrimEnd(',') + ")";
            ExecuteNonQuery(sb, null);
        }
    }
    public static bool IsExitColumn(string[] columns, string column)
    {
        bool flag = false;
        for (int i = 0; i < columns.Length; i++)
        {
            if (columns[i] == column)
            {
                flag = true;
                break;
            }
        }
        return flag;
    }
    #endregion
}

}

时间: 2024-10-11 03:31:31

access-如何在Access中删除一行数据,怎么出错?? String sql=&amp;quot;DELETE FROM T的相关文章

datagridview-使用按钮删除dgv中的一行数据

问题描述 使用按钮删除dgv中的一行数据 我选中了DGV的一行(好像只会显示她只会选中一个单元格,但我就是要删掉这一整行)就是我 点击一个按钮(删除),那么就会从DGV中删掉我选中的这一行的数据,数据不在数据库 是我自己导入的文件 所以不需要修改数据库 只要简单的在DGV界面上删掉这一行就行了 private void button3_Click(object sender, EventArgs e) { if ( dataGridView1.SelectedRows.Count > 0) {

怎么删除DataGridView中的一行数据

问题描述 点击button的时候,怎么删除DataGridView中的一行数据intindex=0;//dataGridView1中ID列的索引stringtemp=string.Format("deletegoodswhereID={0}",dataGridView1[index,dataGridView1.SelectedCells[0].RowIndex].Value);dataGridView1.Rows.RemoveAt(dataGridView1.SelectedCells

c++ 编程问题-.txt文件中删除某些数据而保留其他数据

问题描述 .txt文件中删除某些数据而保留其他数据 比如我有个.txt文件,名字叫aaa 里面有数据是这样的: 第一行11111 第二行23222 第三行32562 那么怎么才能用C++的代码实现把第二行删除掉,而保留第一行和第三行呢? 求代码,最后带一些解析 解决方案 先用ostream对象把文件读到一个缓冲区,然后对缓冲区修改,最后将缓冲区用istream对象写入到文件就行了,主要是对缓冲区的操作而已

如何在gridview中批量添加数据

问题描述 如何在gridview中批量添加数据 我想在dev gridview 中批量添加数据,如何在gridview中批量添加数据,并保存数据库中 解决方案 向数据库批量添加数据JDBC--批量添加数据C#批量添加数据 解决方案二: 希望我的回复对你有用. 假定有一个Product表,字段有(Id,Name,Quantity,...)我们要一次批量更新Quantity的值 首先在Gridview中,Quantity列以TemplateField显示,其他的列属性设为只读,把显示格式设为Text

javascript中删除页面数据的问题

问题描述 javascript中删除页面数据的问题 在一个HTML程序的的地步引入了两个JS程序,现在我在HTML页面添加了一个删除按钮 <a href=""index.html""><input type=""button"" value=""Remove!"" id=""a"" onclick=""remo

如何在.NET中处理WMI数据

如何在.NET中处理WMI数据-------------------------------------------------------------------------------- 学习当WMI属性与.NET数据类型不相符时,如何进行处理. by Ken Getz备注:在2月12日(周三)于San Francisco举办的VBITS大会上,Ken Getz发布了主题为"Fill the Gaps With WMI"和"Save Yourself With .NET

Excel2003/2007中删除重复数据

大家在使用Excel表格总汇大批量数据时,难免会发现一些重复行和重复数据,这时我们就应该将那些重复的数据删除,以免会影响我们的工作,在Excel中删除重复数据和重复行的方法有N多,Excel2003删除重复数据和重复行方法: 第1种情况:重复行的内容完全一致 如下图所示,第2行和第4行的内容完全相同: 操作方法: 选中表中的所有记录(注意,此时应将每列的标题行也选择上,否则筛选完的数据表中将不再包含有该标题行),执行"数据"菜单→"筛选→高级筛 选"命令;在弹出的&

Excel 2007中删除重复数据的办法

  Excel 2007中删除重复数据的办法 如果经常跟数据打交道,最头痛的莫过于收集到大量信息中,有一部分重复数据,如果找到并删除他们实在是一件麻烦的事情,不过在Excel 2007中可以很轻松的解决. 第一步:找到重复数据 首先打开Excel,选中需要整理的数据区域,然后选择"开始"选项卡中的"条件格式",在下拉菜单中选择"突出显示单元格规则/重复值",在弹出的"重复值"对话框中选择一个合适的样式,以便突出显示重复值,没有

jquery动态添加删除一行数据示例

 这篇文章主要介绍了jquery如何动态添加删除一行数据,需要的朋友可以参考下 <html> <head> <title>添加.删除一行</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="../js/