1、安装数据库
SQLServer2008下载:http://www.jb51.net/softs/43885.html
破解码:PTTFM-X467G-P7RH2-3Q6CG-4DMYB
安装:https://jingyan.baidu.com/article/948f592434b407d80ef5f97d.html
2,、启动SQLServer2008,连接数据库服务器
如果遇到连接失败问题,可参见http://www.jb51.net/article/59352.htm
如果在修改“SQL Server网络配置”过程中无内容,建议重装数据库。
登陆服务器名称为“local”,身份验证为“Windows身份验证”。初次登陆成功后,“对象资源管理器”中无内容,尚不知道原因,再次连接后,其出现本地数据库相应信息。
SQLServer身份验证登陆方法,可参见http://www.2cto.com/database/201308/232907.html
关于数据库中简单操作,推荐连接,还不错的一个例子:https://wenku.baidu.com/view/95e34d4c48d7c1c708a145b7.html
过程中有可能会遇到:https://jingyan.baidu.com/article/03b2f78c4c32ad5ea237ae0b.html
MS SQL Server 2008 在建完表后,如果要插入任意列,则提示:
当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改,如果强行更改会出现以下提示:不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。
工具-〉选项-〉左侧有个 设计器-〉表设计器和数据库设计器 -> 阻止保存要求重新创建表的更改(右侧)
把钩去掉,就可以了
3.连接数据库
具体方法可参见:https://jingyan.baidu.com/article/d169e186b0a432436611d8d2.html
4.增删改查
4.1增
/// <summary> /// 增加数据库内容--设备错误代码表 /// </summary> /// <param name="sheetName"></param> /// <param name="str1">本数据库中表示DeviceID</param> /// <param name="str2">本数据库中表示DeviceErrorCode</param> public int addData(string sheetName, string str1, string str2) { conn.Open(); SqlCommand cmd = new SqlCommand("insert into " + sheetName + " values('" + str1 + "','" + str2 + "')", conn); try { cmd.ExecuteNonQuery(); conn.Close(); } catch (SqlException e) { conn.Close(); return e.Number; } return 1; }根据数据库内容不同,需要编写不同参数的addData函数以进行重载,是否有更便捷方式。日后跟进。
4.2删
/// <summary> /// 删出数据库内容 /// </summary> public void delete(string sheetName,string columnName,string deleteData) { conn.Open();//打开数据库 SqlCommand cmd = new SqlCommand("delete from " + sheetName + " where " + columnName + "='" + deleteData + "'", conn); cmd.ExecuteNonQuery(); conn.Close();//关闭数据库 }
编程时遇到问题:DELECT语句与REFERENCE约束 冲突
解决方法:删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
如图:
4.3改
/// <summary> /// 更新数据库某值,UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 /// </summary> /// <param name="sheetName">表名称</param> /// <param name="columnName1">欲被修改列名称</param> /// <param name="newValue">新值</param> /// <param name="columnName2">定位列</param> /// <param name="targetValue">定位列值</param> /// <returns></returns> public int update(string sheetName, string columnName1, string newValue,string columnName2,string targetValue) { conn.Open(); SqlCommand cmd = new SqlCommand("update " + sheetName + " set " + columnName1 + "='" + newValue + "' where " + columnName2 + "='" + targetValue + "'", conn); if (dataExist(sheetName, columnName2, targetValue)) { try { cmd.ExecuteNonQuery(); conn.Close(); } catch (SqlException e) { conn.Close(); return e.Number; } return 1; } else { conn.Close(); return 0; } } /// <summary> /// 判断数据是否存在于数据库中 /// </summary> /// <param name="sheetName">表名称</param> /// <param name="columnName">列名称</param> /// <param name="data">查找数据名称</param> /// <returns></returns> private bool dataExist(string sheetName, string columnName,string data) { //conn.Open();//打开数据库 SqlCommand myCmd = new SqlCommand("select count(*) from "+sheetName+" where "+columnName+"='"+data+"'", conn); //int n = myCmd.ExecuteNonQuery(); int n = int.Parse(myCmd.ExecuteScalar().ToString()); //conn.Close(); if (n > 0) { return true; } else { return false; } }
存在问题:因为不知如何获取是否从数据库中查到要求数据的信息,故想先查询数据中是否有该数据。但感觉效率很低。日后跟进。
4.4查
/// <summary> /// 查找表中所有数据 /// </summary> /// <param name="sheetName">表名称</param> /// <returns></returns> public DataSet select(string sheetName) { //查找所有设备状态信息 SqlCommand cmd = new SqlCommand("select * from "+sheetName, conn); SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = cmd; DataSet dataSet = new DataSet(); sda.Fill(dataSet, "cs"); return dataSet; } /// <summary> /// 查找某一数据相关 /// </summary> /// <param name="sheetName">表名称</param> /// <param name="columnName">查找列</param> /// <param name="data">查找列中某一数据</param> /// <returns></returns> public DataSet select(string sheetName,string columnName,string data) { SqlCommand cmd = new SqlCommand("select * from " + sheetName + " where " + columnName + " in ('" + data + "')", conn); SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = cmd; DataSet dataSet = new DataSet(); sda.Fill(dataSet, "cs"); return dataSet; }