C# 连接 SQL Server 2008 基础操作+数据库增删改查

时间:2022-09-15 23:24:25
本人菜鸟,记录初次使用C#操作数据库时遇到的问题,各解决方案很多网络查阅资料,只是重新整合。

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约束 冲突

解决方法:删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

如图:

C# 连接 SQL Server 2008 基础操作+数据库增删改查


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;
}