Visual Studio中对本机SQLserver数据库的操作

1.前提条件

要想操作SQLserver数据库,先查看本机是否有SQLserver数据库服务。

在运行框中输入 services.msc ,查看所有服务信息,如果关闭,则打开,如果没有,则安装SQLserver数据库服务。

没有的话,就先下载。https://www.microsoft.com/zh-cn/download/details.aspx?id=29066

具体安装操作看别人的教程。https://www.cnblogs.com/zhangbolg/p/7747641.html

2.用Visual Studio连接数据库,并操作数据库

操作sqlserver数据库,可以用SQLserver Management Studio软件。但是在Visual studio中可以操作,不用通过另一个软件了。

如果找不到服务器资源管理器,则在视图中打开。然后右击数据连接,添加一个连接。

然后就可以自己对数据库操作了。包括写sql语句,和视图操作,及数据查看。

视图操作就不说了,很简单,可以建表,查表,修改表,插入数据,及删除表。

接下来就写一下sql语句,右击数据库连接,新建一个查询写sql语句 

注意:

①最好全用大写

②表名用中括号[ ]括起来,虽然有时候不用中括号也行(表名是与系统的一些名称有冲突的话,就要用中括号)

③字段类型有 int 和 char,但是写sql语句时int数据也可以用 ' ' 括起来,但是读取数据时,字段是什么类型,读出来的就是什么类型,int 不能直接当作 string用。

select * from sysobjects where name='user'   查询本机user表的所有信息
select name from sysobjects                  查询本机所有的表的名字,如果改用*,则是所有信息
select COUNT(*) from sysobjects              查询本机所有表的数量
select name from sysobjects where xtype='U'  查询本机所有用户表的名字
select name from sysobjects where xtype='S'  查询本机所有系统表名字

----------------------------------------------------------------------

查询user表的所有信息,如果只想查看user表的字段名字信息,把 * 改为 COLUMN_NAME
字段的数据类型,把 * 改为 DATA_TYPE
字段的数据长度范围限制,把 * 改为 CHARACTER_MAXIMUM_LENGTH 
select * from INFORMATION_SCHEMA.COLUMNS where table_name='user'
select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from INFORMATION_SCHEMA.COLUMNS where table_name='user'

----------------------------------------------------------------------

delete from a    删除a表的所有数据记录,并未删除该表
drop table a     删除a表的数据记录,且删除了该表,刷新一次,就看不到a表了

----------------------------------------------------------------------

新建一张 mynewtable 表,主键id自增以1开始,每次加1
CREATE TABLE [mynewtable]
(
id int primary key identity(1,1),
name char(20) not null,
age int not null
---- primary key(id)  设置主键也可以写在这个位置。记得前面要加个逗号
)

----------------------------------------------------------------------

user表中,主键为id(int),字段有myname(char(10)) , password(char(10))
select * from [user]
select id,myname,password from [user]
select * from [user] where myname like 'a%'  查询user表中 myname字段数据值以a开头的记录
select * from [user] order by id desc        查询user中所有信息,并以id的值降序排列,默认升序asc
select top 3 * from [user]                   查询前3条记录  ,后3条记录加个降序排列就行了
select top 50percent * from [user]           查询前50%的记录

update [user] set password='2018',myname='liuyan' where id='2 '        更新记录 int的单引号可省略
delete from [user] where id='2'                                        删除记录
insert into [user] (id,myname,password) values('66','liuyan','2018');  插入数据 int的单引号可省略

3.在c#代码中,操作sqlserver数据库

注意点:记得要加 try catch语句

数据库连接封装类 SQLManage.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; //要引入命名空间
using System.Data;

namespace 数据库操作软件 {
    class SQLManage {
//sqlstring为数据库鼠标右击的属性中的连接字符串的值
        static String sqlstring = @"Data Source=.;Initial Catalog=liuyan;Integrated Security=True";
        static SqlConnection sqlConnection = new SqlConnection(sqlstring);
        static String databaseName = "";  //数据库名称

开启连接
        public static void OpenSqlServer() {
            if (sqlConnection.State == ConnectionState.Closed) {
                sqlConnection.Open();
                databaseName = sqlConnection.Database;
            }
            else {
                //已开启
            }
        }
关闭连接
        public static void CloseSqlServer() {
            if (sqlConnection.State == ConnectionState.Open) {
                sqlConnection.Close();
                databaseName = "";
            }
            else {
                //已关闭
            }
        }

查询 table_name 表的所有数据
        public static String ShowAllInformation(String table_name) {
            SqlCommand cmd;
            String sql_cmd = "select * from ["+table_name+"]";
            String s = "";
//SqlCommand
            using (cmd = new SqlCommand(sql_cmd, sqlConnection)) {
                try {
//SqlDataReader
                    SqlDataReader reader = cmd.ExecuteReader();
//前进到下一条记录,并取前两个字段的值
                    while (reader.Read()) {
                        String s1 = reader.GetString(0);
                        String s2 = reader.GetString(1);
                        s += s1 + "   " + s2 + "\n";
                    }
                    reader.Close();
                }
                catch (Exception e) {
                    return table_name + " 该表不存在";
                }
            }
            return s;
        }

查询 table_name 表的所有字段名字
        public static String ShowAllColumnsName(String table_name) {
            String sqlstring = @"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '"+table_name+"'";
            SqlCommand sqlcmd = new SqlCommand(sqlstring,sqlConnection);
            SqlDataReader reader = sqlcmd.ExecuteReader();
            String s = "";
            while (reader.Read()) {
                String s1 = reader.GetString(0);
                s += s1 + "\n";
            }
            reader.Close();
            return s;
        }

查询数据库的所有用户表的名字
        public static String showAllTABLEName() {
            String sqlstring = @"SELECT name FROM SYSOBJECTS WHERE xtype='u'";
            SqlCommand cmd = new SqlCommand(sqlstring,sqlConnection);
            SqlDataReader reader = cmd.ExecuteReader();
            String s = "";
            while (reader.Read()) {
                String s1 = reader.GetString(0);
                s += s1 + "\n";
            }
            reader.Close();
            return s;
        }

建表 成功的话sqlcmd.ExecuteNonQuery() == -1
        public static String CreateTable(String table_name) {
            String sqlstring = "CREATE TABLE ["+table_name+ @"]
                                  (
                                        
                                        name1 VARCHAR(50) NOT NULL,
                                        name2 VARCHAR(50) NOT NULL,
                                        id INT PRIMARY KEY IDENTITY(1,1)
                                    )
                                ";
            SqlCommand sqlcmd = new SqlCommand(sqlstring, sqlConnection);
            try {
                if (sqlcmd.ExecuteNonQuery() == -1) {
                    return sqlstring + "\n" + "创建成功";
                }
                else {
                    return "创建出错,创建失败";
                }
            }
            catch (Exception e) {
                return sqlstring + "\n" + "创建失败,已存在";
            }
        }

删除表 成功的话sqlcmd.ExecuteNonQuery() == -1
        public static String DeleteTable(String table_name) {
            String sqlstring = @"DROP TABLE "+table_name;
            SqlCommand sqlcmd = new SqlCommand(sqlstring , sqlConnection);
            try {
                if (sqlcmd.ExecuteNonQuery() == -1) {
                    return table_name + " 表删除成功";
                }
                else {
                    return "删除出错,删除失败";
                }
            }
            catch (Exception e) {
                return "删除失败,已删除";
            }
        }

插入数据  成功的话sqlcmd.ExecuteNonQuery() != -1
        public static String MyTable_InsertData(String mytable ,String n1,String n2) {
            String sqlstring = "INSERT INTO ["+mytable+"] (name1,name2) values('"+n1+"','"+n2+"')";
            SqlCommand cmd = new SqlCommand(sqlstring,sqlConnection);
            try {
                if (cmd.ExecuteNonQuery() != -1) {
                    return mytable + " 表 插入数据 " + n1 + "  " + n2 + " 成功";
                }
                else {
                    return "未知出错";
                }
            }
            catch (Exception e) {
                return "插入数据失败或者表不存在";
            }
        }

更新数据 成功的话sqlcmd.ExecuteNonQuery() != -1
        public static String Mytable_UpdateData(String[] conditionColumn_condition__valueColumn_value ) {
            String tablename = conditionColumn_condition__valueColumn_value[0];
            String NAME0 = conditionColumn_condition__valueColumn_value[1]; //条件字段
            String NAME1 = conditionColumn_condition__valueColumn_value[2]; //条件值
            String NAME2 = conditionColumn_condition__valueColumn_value[3]; //更新字段
            String NAME3 = conditionColumn_condition__valueColumn_value[4]; //更新值
            String sqlstring = @"UPDATE ["+tablename+"] SET "+ NAME2 +" = '"+ NAME3 +"' WHERE "+ NAME0 +" = '"+ NAME1 +"'";
            SqlCommand cmd = new SqlCommand(sqlstring , sqlConnection);

            try {
                if (cmd.ExecuteNonQuery() != -1) {
                    return NAME0 + "字段=" + NAME1 + ";的" + NAME2 + " 字段的值更新为 : " + NAME3 + "更新成功";
                }
                else {
                    return "未知更新错误";
                }
            }
            catch (Exception e) {
                return "更新出错,表不存在或者字段不存在";
            }
        }

删除表中的数据
        public static String Mytable_DeleteDate(String[] inputparams) {
            String tablename = inputparams[0];
            String conditionColumn = inputparams[1]; //条件字段
            String conditionValue = inputparams[2];  //条件值
            String sqlstring = "DELETE FROM ["+tablename+"] WHERE "+conditionColumn+" = '"+conditionValue+"'";
            SqlCommand cmd = new SqlCommand(sqlstring,sqlConnection);
            try {
                if (cmd.ExecuteNonQuery() != -1) {
                    return "删除成功";
                }
                else {
                    return "未知错误,删除失败";
                }
            }
            catch (Exception e) {
                return "删除失败,表不存在,或者条件不存在";
            }
        }





    }
}

使用举例,查询表的字段名

private void finduserC_btn_Click(object sender, EventArgs e) {
            SQLManage.OpenSqlServer();
            String table_name = Interaction.InputBox("在下方输入要查找字段的表名。", "查字段", "", -1, -1);
            String s = SQLManage.ShowAllColumnsName(table_name);
            this.showresult.Text = s;
            SQLManage.CloseSqlServer();
        }

4.使用配置文件

我们上面使用的 String sqlstring是直接赋值的,我们可以将其写入配置文件 App.Config,然后获取。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="WindowsFormsApp17.Properties.Settings.liuyanConnectionString"
            connectionString="Data Source=.;Initial Catalog=liuyan;Integrated Security=True"
            providerName="System.Data.SqlClient" />

//我们自己写的一个
      <add name="liuyanDataBase"
           connectionString="Data Source=.;Initial Catalog=liuyan;Integrated Security=True"
           />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

获取如下:

String constring = ConfigurationManager.ConnectionStrings["liuyanDataBase"].ToString();
            SqlConnection con = new SqlConnection(constring);
            con.Open();
            String sqls = "SELECT * FROM [USER]";
            SqlCommand cmd = new SqlCommand(sqls,con);
            SqlDataReader reader = cmd.ExecuteReader();
            String s = "";
            while (reader.Read()) {
                String s1 = reader.GetString(0);
                String s2 = reader.GetString(1);
                String s3 = reader.GetInt32(2)+"";
                s += s1 + "  " + s2 + "  " + s3 + "\n";
            }
            MessageBox.Show(s);

记得要先在项目中引入程序集   System.Configuration

然后引入命名空间  using System.Configuration

之后我们才能使用  ConfigurationManage这个类。

猜你喜欢

转载自blog.csdn.net/qq_38261174/article/details/84964071