我确定有人问过这个问题;但我找不到确切的上下文。这是新手还是不明智的方法?或者这是一种可以接受的方法。
我有一个正在处理的项目。我有这四个表:
- 顾客
- 地址
- 地点
- 登录
所以数据库是基本的,没什么太疯狂的。
但是我创建了一个Restful Service
将我的客户端链接到我的服务器。执行我的 Crud 操作需要一个简单的Insert Command
.
像:
string sqlInsertStr = "INSERT INTO Customer (First, Last, Phone, Email)
VALUES (@first, @last, @phone, @email)";
这样就可以处理我的四张桌子之一;我的想法是这两种方法之一:
- 使用 a
Generic
来存储每个单独的 Query;然后循环迭代每个查询。 - 使用
Generic
包含一系列的 aStored Procedures
进行迭代。
我的目标是避免多次strings
迭代并写入数据库。
我的理由是,当客户修改单个字段或整个配置文件时;它将一致地处理所有表格。我知道在SQL
尝试跨多个表插入数据时它有局限性。
这是一个坏方法吗?这个特别小而且简单。所以我不想发疯;但它是为了学校。所以我试图了解我是否提出了一个有效的解决方案,如果我被认为是一个正确的解决方案?
任何关于此事和解释的意见都会很棒。
更新:
对于造成的混乱,我深表歉意;是的,我有一个对象模型——它包含每个表的每一列的所有信息。我的问题是这样的:
SQL
不喜欢Inserting
跨多个表。所以这适用于一张桌子:
using (connection)
{
string sqlInsertStr = "INSERT INTO Customer (First, Last, Phone, Email)
VALUES (@first, @last, @phone, @email)";
connection = new SqlConnection(connectionStr);
command = new SqlCommand();
command.Connection = connection;
command.Connection.Open();
command.CommandText = sqlInsertStr;
SqlParameter firstParam = new SqlParameter(@"first", cust.First);
SqlParameter lastParam = new SqlParameter(@"last", cust.Last);
SqlParameter phoneParam = new SqlParameter(@"phone", cust.Phone);
SqlParameter emailParam = new SqlParameter(@"email", cust.Email);
command.Parameters.AddRange(new SqlParameter[]
{ firstParam, lastParam, phoneParam, emailParam});
command.ExecuteNonQuery();
command.Connection.Close();
}
这将很容易写入一张表;但是需要插入到其他表中的所有其他数据呢?我需要sqlInsertStr
为每个表创建一个吗?或者我不能简单地做这样的事情:
using(connection)
{
list<string> sqlInsertStr = new list<string>();
sqlInsertStr.Add("INSERT INTO Customer (First, Last, Phone, Email)
VALUES (@first, @last, @phone, @email)"l
sqlInsertStr.Add("INSERT INTO Address (Street, City, State, Zip, Country)
VALUES (@Street, @City, @State, @Zip, @Country)";
connection = new SqlConnection(connectionStr);
command = new SqlCommand();
command.Connection = connection;
command.CommandText = sqlInsertStr;
// Repeat with Parameters and etc.
}
所以本质上不会使用Generic
或StringBuilder
允许我只包含一个字符串来处理所有带有正确数据的插入吗?还是我完全过度思考/困惑自己。我还在学习,所以解释会很棒。