想了解仅当总数小于阈值时,才将行插入到SQLServer表中的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于ASP.net使用表单将数据插入到sqlserver表中、c#–如何准确地将
想了解仅当总数小于阈值时,才将行插入到SQL Server表中的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于ASP.net使用表单将数据插入到sql server表中、c# – 如何准确地将sql脚本插入SqlServer表、java poi读取Excel数据 插入到SQL SERVER数据库中、sql server2000mdf文件可以导入到sql server2012中的新知识。
本文目录一览:- 仅当总数小于阈值时,才将行插入到SQL Server表中
- ASP.net使用表单将数据插入到sql server表中
- c# – 如何准确地将sql脚本插入SqlServer表
- java poi读取Excel数据 插入到SQL SERVER数据库中
- sql server2000mdf文件可以导入到sql server2012中
仅当总数小于阈值时,才将行插入到SQL Server表中
我正在使用SQL Server 2012。
我有用于存储用户的表。允许的最大用户数为100万。我有一个要在其中注册用户的程序。当我插入时,我想确保用户表中的总行数不会超过100万。我宁愿使用允许最大并发性的方法。
我相信我可以使用ISOLATION
LEVEL为SERIALIZABLE的事务,然后首先计算行数,如果总计数少于100万,则插入行。我的理解是SERIALIZABLE的限制非常严格,并且会随着并发性的增加而导致性能下降。
IF(SELECT COUNT(*) FROM Users) < 100000BEGIN INSERT INTO Users VALUES (@Name, @Email, @Password)END
如何自动执行此操作,以确保总行数小于100万,但是同时我进行了最小限度的锁定以防止阻止其他事务?
有什么解决方案/最佳做法可以解决这种情况吗?
答案1
小编典典您可以创建一个SELECT
来检查用户数并检索新用户的数据,然后使用该选择将其插入表中:
INSERT INTO users ( name, email, [password])SELECT ''newUser'' AS name , ''email@example.com'' AS email , ''fsfsfs'' AS [password]FROM usersHAVING COUNT(*) < 100000;
SELECT
当数据库中的用户数少于100000时,该语句将返回一行;如果用户数为100000或更多,则该语句将返回0记录。
整个语句(INSERT..SELECT
)在每种情况下均有效,但是当该SELECT
部分返回0行时,INSERT
将不会插入任何内容。
通过SERIALIZABLE
事务级别,可以确保并发写入不会互相干扰。COUNT(*)使用最有效的索引/键对行进行计数,这意味着锁定时间将最短。
由于整个动作是在一个语句中完成的,因此可以防止在SELECT
和的执行之间插入INSERT
SQL Fiddle演示
ASP.net使用表单将数据插入到sql server表中
在PHP我会做一个表单与一个动作,让我们说一个process.PHP页面,在该页面中,我将采取的职位值,并使用一个 mysql_query将做一个插入.
现在我迷路了,我正在使用visual studio 2010,在ASP.net中使用sql server 2008创建一个插入.
我已经在App_Data文件夹中定义了一个sql数据库.
基本上我需要(除非有更好的方法)是:
>我如何获得帖子值.
>如何将它们插入数据库.
谢谢.
解决方法
这里只是一个例子:
http://geekswithblogs.net/dotNETvinz/archive/2009/04/30/creating-a-simple-registration-form-in-asp.net.aspx
您定义以下标记之间的文本框:
<form id="form1" runat="server">
您创建您的文本框并将其定义为runat =“server”,如下所示:
<asp:TextBox ID="TxtName" runat="server"></asp:TextBox>
定义一个按钮来处理你的逻辑,这样(注意onclick):
<asp:Button ID="Button1" runat="server" Text="Save" onclick="Button1_Click" />
在后面的代码中,如果用户通过定义一个名为的方法单击按钮,就可以定义您希望服务器做什么
protected void Button1_Click(object sender,EventArgs e)
或者您可以双击设计视图中的按钮.
这是一个非常快速的示例代码插入表中的按钮单击事件(codebehind)
protected void Button1_Click(object sender,EventArgs e) { string name = TxtName.Text; // Scrub user data string connString = ConfigurationManager.ConnectionStrings["yourconnstringInWebConfig"].ConnectionString; sqlConnection conn = null; try { conn = new sqlConnection(connString); conn.open(); using(sqlCommand cmd = new sqlCommand()) { cmd.Conn = conn; cmd.CommandType = CommandType.Text; cmd.CommandText = "INSERT INTO dummyTable(name) Values (@var)"; cmd.Parameters.AddWithValue("@var",name); int rowsAffected = cmd.ExecuteNonQuery(); if(rowsAffected ==1) { //Success notification } else { //Error notification } } } catch(Exception ex) { //log error //display friendly error to user } finally { if(conn!=null) { //cleanup connection i.e close } } }
c# – 如何准确地将sql脚本插入SqlServer表
那么,如何在sqlServer表中安全地存储任意tsql?
如果需要,我可以使用sql或c#对脚本进行编码.
解决方法
C#
var cmd = new sqlCommand(...); cmd.CommandText = "INSERT INTO [Bla] ([sql Column]) VALUES (@MyValue)"; cmd.Parameters.AddWithValue("MyValue",yourValueHere);
这将照顾所有的引用等.
如果要使用存储过程,最终会以类似的方式执行它:
var cmd = new sqlCommand(...); cmd.CommandText = "Storesql"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("MyValue",yourValueHere);
java poi读取Excel数据 插入到SQL SERVER数据库中
Impl实现层
package org.cupd.spdb.report.importexcel.dao.impl;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.cupd.spdb.report.importexcel.dao.CardBinDao;
import com.websurf.spdb.bo.DBConnBOImpl;
public class CardBinDaoImpl implements CardBinDao {
private static final Log log=LogFactory.getLog(CardBinDaoImpl.class);
private static DBConnBOImpl dbConn = new DBConnBOImpl();
PreparedStatement ps = null;
Connection conn = null;
ResultSet rs = null;
private String filePath="E:\\Microsoft Excel.xlsx";
/**
* 插入数据
*/
public boolean insertDB(){
boolean flag=true;
try {
//文件流指向excel文件
// FileInputStream fin=new FileInputStream(filePath);
XSSFWorkbook workbook=new XSSFWorkbook(filePath);//创建工作薄
XSSFSheet sheet=workbook.getSheetAt(0);//得到工作表
XSSFRow row=null;//对应excel的行
XSSFCell cell=null;//对应excel的列
int totalRow=sheet.getLastRowNum();//得到excel的总记录条数
log.info("得到excel的总记录数"+totalRow);
//以下的字段一一对应数据库表的字段
String cardName="";
String cardType="";
String cardBin="";
String cardLength="";
String activityCode="";
String note="";
String sql ="insert into BizCardBin(cardName,cardType,cardBin,cardLength,activityCode,note) values(?,?,?,?,?,?)";
for(int i=2;i<=totalRow;i++){
row=sheet.getRow(i);
cell=row.getCell((short) 0);
cardName=cell.getStringCellValue().toString();
cell=row.getCell((short) 1);
cardType=cell.getStringCellValue().toString();
cell=row.getCell((short) 2);
cardBin=cell.getStringCellValue().toString();
cell=row.getCell((short) 3);
cardLength=cell.getStringCellValue().toString();
cell=row.getCell((short) 4);
activityCode=cell.getStringCellValue().toString();
cell=row.getCell((short) 5);
note=cell.getStringCellValue().toString();
conn=dbConn.getConnection();
log.info("获取JDBC连接完成");
ps=conn.prepareStatement(sql);
ps.setString(1,cardName);
ps.setString(2,cardType);
ps.setString(3,cardBin);
ps.setString(4,cardLength);
ps.setString(5,activityCode);
ps.setString(6,note);
ps.execute();
System.out.println("preparestatement successful");
}
dbConnClose(conn, dbConn);
psClose(ps, rs);
} catch (FileNotFoundException e) {
flag=false;
e.printStackTrace();
} catch(IOException ex){
flag=false;
ex.printStackTrace();
} catch(SQLException exx){
flag=false;
exx.printStackTrace();
}
return flag;
}
public static void main(String[] args) {
CardBinDaoImpl e=new CardBinDaoImpl();
e.insertDB();
}
/**
* 插入数据 只需要传入插入sql即可
* 插入sql的样例:insert into t_department values(''D004'',''金融部'');
* @param insert 插入语句
* @return
* @throws SQLException
*/
/*public int insertCardBin(BizCardBin cardBin){
int result=0;
PreparedStatement ps = null;
Connection conn = null;
String sql ="insert into BizCardBin(cardName,cardTyoe,cardBin,cardLength,cardLength,activityCode,note) values(?,?,?,?,?,?,?)";
try {
conn=dbConn.getConnection();
log.info("获取JDBC连接完成");
ps = conn.prepareStatement(sql);
ps.setString(1, cardBin.getCardName());
ps.setString(2, cardBin.getCardType());
ps.setString(3, cardBin.getCardBin());
ps.setString(4, cardBin.getCardLength());
ps.setString(5, cardBin.getActivityCode());
ps.setString(6, cardBin.getNote());
result = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
log.error("SQL Exception "+ e);
e.printStackTrace();
return 0;
}finally{
dbConnClose(conn, dbConn);
psClose(ps, rs);
}
return result;
}
*/
public void dbConnClose(Connection conn,DBConnBOImpl dbConn){
if(conn!=null){
dbConn.close(conn);
}
}
private static void psClose(final PreparedStatement preparedStatement,
final ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
} catch (SQLException e) {
log.error("error", e);
}
}
}
Action层
public class CardBinAction extends DispatchAction {
public ActionForward showCardBinPage(ActionMapping mapping, ActionForm actionform,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return mapping.findForward("showCardBinPage");
}
private CardBinService CardBinService=new CardBinServiceImpl();
public int insertCardBin()
{
int result=CardBinService.insertDB();
return result;
}
sql server2000mdf文件可以导入到sql server2012中
1、附加数据库
2、“添加”mdf文件所在路径
3、选择“脚本”,确定
出现如下查询语句:
4、单击执行,即可
备注:执行时可能会因为权限不足而报错;解决办法如下
1)修改文件权限即可
【右键】该mdf文件和ldf文件,选择【属性】,选择【安全】,选择【自己的用户】,【编辑】,添加【完全控制】,最后应用保存即可:
今天的关于仅当总数小于阈值时,才将行插入到SQL Server表中的分享已经结束,谢谢您的关注,如果想了解更多关于ASP.net使用表单将数据插入到sql server表中、c# – 如何准确地将sql脚本插入SqlServer表、java poi读取Excel数据 插入到SQL SERVER数据库中、sql server2000mdf文件可以导入到sql server2012中的相关知识,请在本站进行查询。
本文标签: